SQL Server - Trigger for insert

 
Vista:

Trigger for insert

Publicado por alfredo (2 intervenciones) el 16/04/2007 16:47:06
Hola, tengo un trigger que cuando se introduce un nuevo registro en una tabla hace que se actualice otra tabla a su vez. El código es algo así:

CREATE TRIGGER [TriggerInsert] ON Tabla
FOR INSERT
AS
UPDATE tabla2
SET campo1 = INSERTED.campo1
FROM INSERTED
WHERE tabla2.campo2 IN (SELECT campo2 FROM INSERTED)

Esto funciona perfectamente para inserciones individuales, pero no cuando se hacen inserciones múltiples. Alquien sabría a qué puede deberse?

Muchas gracias de antemano y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Trigger for insert

Publicado por Isaías (3308 intervenciones) el 16/04/2007 19:37:21
En lugar de hacer WHERE tabla2.campo2 IN (SELECT campo2 FROM INSERTED)

Debes cambiarlo por un JOIN entre ambas tablas, INSERTED y TABLA2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Trigger for insert

Publicado por jose de la rosa (1 intervención) el 13/08/2009 20:33:29
Este ejemplo funciona para un o varios registros insertados

CREATE TRIGGER INTRIG ON SALES FOR INSERT AS
IF @@ROWCOUNT = 1
BEGIN
UPDATE TITLES
SET TITLES.YTD_SALES = TITLES.YTD_SALES + INSERTED.QTY
FROM INSERTED
WHERE TITLES.TITLE_ID = INSERTED.TITLE_ID
END
ELSE
BEGIN
UPDATE TITLES
SET TITLES.YTD_SALES = TITLES.YTD_SALES +
(SELECT SUM(QTY) FROM INSERTED WHERE TITLES.TITLE_ID = INSERTED.TITLE_ID)
WHERE TITLES.TITLE_ID IN (SELECT TITLE_ID FROM INSERTED)
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar