Trigger

18/05/2005 - 12:41 por David Ruiz | Informe spam
Hola a todos,

Tengo un problemilla con un trigger de actualizacion.

Solo se lanza cuando se hace un update a un solo registro de la tabla,
cuando es un update que afecta a mas, no se lanza.

Este es el codigo:

CREATE TRIGGER tgu_agentesobra
ON dbo.agentesobra
FOR UPDATE
AS
declare @ter_terid int
declare @ob_numobraid int
declare @comision char(1)

begin

select @ter_terid=ter_terid, @ob_numobraid=ob_numobraid, @comision=comision
from inserted

if update(ter_terid) and @comision='S'
update dbo.coExpNeg
set IdAgente=@ter_terid
where IdObra=@ob_numobraid
END


Trabajo con SQL Server 2000 Ent. bajo W2003 Server.

Gracias de antemano!!
 

Leer las respuestas

#1 poker
18/05/2005 - 12:48 | Informe spam
Sí se lanza, pero ¿ qué crees que hace tu código cuando ejecutas el
siguiente select y en "inserted" hay más de una fila?¿qué valores de qué
registro va a asignar a tus variables?

select @ter_terid=ter_terid, @ob_numobraid=ob_numobraid,
@comision=comision
from inserted



esto no funciona ni dentro ni fuera de un trigger. Prueba de otra forma.
Ten en cuenta que el trigger se dispara una unica vez aunque tú modifiques
muchas filas.



"David Ruiz" escribió en el mensaje
news:
Hola a todos,

Tengo un problemilla con un trigger de actualizacion.

Solo se lanza cuando se hace un update a un solo registro de la tabla,
cuando es un update que afecta a mas, no se lanza.

Este es el codigo:

CREATE TRIGGER tgu_agentesobra
ON dbo.agentesobra
FOR UPDATE
AS
declare @ter_terid int
declare @ob_numobraid int
declare @comision char(1)

begin

select @ter_terid=ter_terid, @ob_numobraid=ob_numobraid,
@comision=comision
from inserted

if update(ter_terid) and @comision='S'
update dbo.coExpNeg
set IdAgente=@ter_terid
where IdObra=@ob_numobraid
END


Trabajo con SQL Server 2000 Ent. bajo W2003 Server.

Gracias de antemano!!


Preguntas similares