TRIGGER

05/02/2007 - 17:10 por David Ruiz | Informe spam
Buenas a todos,

Me gustaria que el siguiente trigger solamente saltara cuando cambien un
determinado campo de la tabla (ex_delegacionid), pero no es asi y salta
siempre, independientemente que campo se modifique.

El codigo que tengo es este:


create TRIGGER tgu_excexpediente
ON dbo.excexpediente
FOR update
AS
declare @ob_numobraid integer
declare @ex_delegacionid int

if update (ex_delegacionid)
BEGIN
select @ob_numobraid=ob_numobraid, @ex_delegacionid=ex_delegacionid
from inserted

update dbo.coExpNeg
set Idelegacion=@ex_delegacionid
where dbo.coExpNeg.IdObra=@ob_numobraid and
IdTipNegocio=1
end

Es correcto??

Gracias de antemano ;-)
 

Leer las respuestas

#1 Alejandro Mesa
05/02/2007 - 18:46 | Informe spam
David Ruiz,

determinado campo de la tabla (ex_delegacionid), pero no es asi y salta
siempre, independientemente que campo se modifique.



Tienes razon, pues el trigger se dispara cada vez que se ejecute una
sentencia "update" sobre esa tabla, esa es la forma como trabaja este tipo de
trigger. Sin embargo, el codigo entre el "begin ... end" del "if update(...)"
solo se ejecuta si esa columna fue usada en la clausula "SET" de la sentencia
"update".


AMB

"David Ruiz" wrote:

Buenas a todos,

Me gustaria que el siguiente trigger solamente saltara cuando cambien un
determinado campo de la tabla (ex_delegacionid), pero no es asi y salta
siempre, independientemente que campo se modifique.

El codigo que tengo es este:


create TRIGGER tgu_excexpediente
ON dbo.excexpediente
FOR update
AS
declare @ob_numobraid integer
declare @ex_delegacionid int

if update (ex_delegacionid)
BEGIN
select @ob_numobraid=ob_numobraid, @ex_delegacionid=ex_delegacionid
from inserted

update dbo.coExpNeg
set Idelegacion=@ex_delegacionid
where dbo.coExpNeg.IdObra=@ob_numobraid and
IdTipNegocio=1
end

Es correcto??

Gracias de antemano ;-)

Preguntas similares