Hasta hoy creía que los triggers primero se desencadenaban y luego se
actualizaba la base de datos. Pero me ocurre lo siguiente.
TABLAS
Tengo una tabla X con un campo llamado Estado
Tengo una tabla Y de datos relacionados de la tabla X con un campo
llamado FechaLimiteUso
TRIGGERS
-En la tabla Y tengo un trigger de update que no me permite modificar
ningún registro cuyo registro X tenga Estado = CERRADO
-En la tabla X tengo un trigger de update que cuando se cambie el valor
del campo Estado a CERRADO me modifique todos los registros relacionados
de la tabla Y para ponerles FechaLimiteUso igual a la actual
Los triggers son normales, nada de After Update.
PROBLEMA
Al hacer el update de la tabla X para poner Estado = CERRADO, se ejecuta
el trigger que modifica los registros de la tabla Relacionada Y. Al
hacerlo el trigger de la tabla Y, comprueba que el registro de la tabla
X no este CERRADO y lo encuentra cerrado(PERO SI TODAVIA NO HA TERMINADO
DE EJECUTARSE EL TRIGGER Y SE SUPONE QUE LOS TRIGGERS SE EJECUTAN ANTES
DE GUARDAR ¿PORQUE LO ENCUENTRA YA 'CERRADO'?), ejecuta el Raise error y
se deshace la transacción.
¿Esto tiene sentido?
No se como solucionar el problema, ¿Se os ocurre algo?
Un saludo
Leer las respuestas