MySQL - triggers

   
Vista:

triggers

Publicado por jose luis (10 intervenciones) el 25/08/2008 19:07:14
Hola tengo una duda, estoy programando en java usando mysql y triggers en mysql.
Defino un trigger que haga un DELETE en una tabla X cuando elimino un registro de una tabla Y.

Mi pregunta es la siguiente:
El trigger implementa su propia transaccion?
osea si se elimina mi registro de la tabla X (mediante mi sentencia sql), el trigger se activa y realiza el borrado de la tabla Y, pero mi pregunta es si existe problemas en el borrado de la tabla Y ( borrado que hace el trigger) se hace un rollback? o yo tengo que poner especificamente a mi sintaxis de la tabla x un rollback?

no se si me explique.
tratando de resumir:

Los triggers si por cualquier razón no lograron hacer su funcion se hace un rollback?
en caso que la respuesta sea SI, este rollback tambien se aplica en la sentencia que disparo al TRIGGER?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:triggers

Publicado por Gonzalo GC (339 intervenciones) el 26/08/2008 03:34:47
No.
Los triggers no determinan la creación de una transacción. Las transacciones se deben declar explícitamente, porque el estado por default de MySQL es AUTOCOMMIT=TRUE.
Dos detalles:
1. La transacción se debe declarar antes del DELETE a la tabla Y, o bien dentro del TRIGGER. En cualquiera de los dos casos debe realizarse un COMMIT al terminar bien, de lo contrario sí realizará un ROLLBACK automático.
2. MySQL hasta ahora no soporta transacciones anidadas, por lo que si estás realizando una transacción en una sentencia que afecta una tabla, no puedes hacer que un trigger de esa tabla declare una transacción. Generará un error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar