Ayuda con un trigger please

05/04/2005 - 15:39 por Berta Gomez | Informe spam
Un tabla OBRAS tiene un estatus (0-activa 1-rescindida). Ese campo debo
actualizarlo cuando se registra un contrato de rescicion en la tabla
CONTRATOS, en este caso cuando el campo CONTRATOS.tipo = 5 (flag de
rescision). El asunto es que CONTRATOS tiene otro campo estatus (0-activo
1-inactivo). Si el contrato se inactiva aun su tipo sea 5 (rescision), la
obra debe quedar como que no esta rescindida. El contrato posee un campo
Obra para referenciar la obra a la cual se refiere.

He hecho este trigger despues de muuuuucho pensar, para (insert, update y
delete ) en la tabla CONTRATOS y me gustaria me dieran una opinion pues no
estoy muy clara porque me funciona para rescindir la obra pero si se marca
como inactivo el contrato de rescision no me funciona.

for insert,update, delete
..
..
UPDATE OBRAS
SET OBRAS.STAT=1
from OBRAS inner join (select obra from INSERTED union select obra from
DELETED) contratosmodificados on OBRAS.obra=contratosmodificados.obra
WHERE EXISTS( select contrato from CONTRATOS where CONTRATOS.obra=OBRAS.obra
and CONTRATOS.tipo=3 and CONTRATOS.stat=1)

Preguntas similare

Leer las respuestas

#16 Alejandro Mesa
05/04/2005 - 19:29 | Informe spam
Berta,

Ya te conteste en el otro mensaje.

Veamos en palabras lo que hace el trigger. Si alguna obra es referenciada,
tanto en la tabla inserted como en la tabla deleted, entonces chequea si
existe algun contrato tipo = 5 con stat = 1 y actualiza la columna
[obras].[stat] = 1 si no existe dicho contrato entonces [obras].[stat] = 0.
Comparto el comentario de Ricardo, muy ingenioso lo que has hecho al unir las
tablas inserted y deleted, tambien reconosco la solucion la solucion posteada
por el (Ricardo). Solo quedaria hacer la actualizacion cuando se cambia la
columna [obra] en la tabla [contratos] y/o la columna [stat], pero aun asi la
idea sigue siendo genial, como dice el dicho "lo cortez no quita lo valiente".


AMB

"Berta Gomez" wrote:

Mostrar la cita
#17 Ricardo Passians
05/04/2005 - 22:16 | Informe spam
Mostrar la cita
valiente".
Mostrar la cita
Es un buen gesto que te enaltece.


Saludos
Ads by Google
Search Busqueda sugerida