Update que parece que guarda antes de lanzar el Trigger

02/12/2004 - 15:42 por BigSus | Informe spam
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

#1 Javier Loria
02/12/2004 - 16:12 | Informe spam
Hola:
A excepcion de los Triggers Instead Of, estos se disparan siempre
despues de la accion de la BD.

Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"BigSus" wrote in message
news:u$
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

Preguntas similares