Cómo disparar un Trigger por cada registro eliminado ?

11/04/2007 - 22:23 por Ronald Espinosa | Informe spam
Hola a todos,

Tengo un Trigger de DELETE en una tabla en SQL Server 2005, el problema es
que cuando envío una sentencia
DELETE FROM Tabla1 Where codigo = '01'

La condición afecta varios registros, el problema es que solamente me
ejecuta el Trigger una sola vez pero si elimina todos los registros que
cumplen la condición.

Definí el Trigger de la siguiente manera:

CREATE TRIGGER Trigger_Delete
ON Tabla1
FOR DELETE
AS
BEGIN
Print 'Inicio'
END

NOTA: También cambié la opción FOR por AFTER y el resultado es el mismo.


Gracias por su ayuda.


Ronald.

Preguntas similare

Leer las respuestas

#1 Jose Mariano Alvarez
11/04/2007 - 22:34 | Informe spam
En el post <eyyA$,
DIJO .
Hola a todos,

Tengo un Trigger de DELETE en una tabla en SQL Server 2005, el problema es
que cuando envío una sentencia
DELETE FROM Tabla1 Where codigo = '01'

La condición afecta varios registros, el problema es que solamente me
ejecuta el Trigger una sola vez pero si elimina todos los registros que
cumplen la condición.

Definí el Trigger de la siguiente manera:

CREATE TRIGGER Trigger_Delete
ON Tabla1
FOR DELETE
AS
BEGIN
Print 'Inicio'
END

NOTA: También cambié la opción FOR por AFTER y el resultado es el mismo.


Gracias por su ayuda.


Ronald.





No se puede hacer eso.
Escribe codigo de conjuntos en el trigger.



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)


IMPORTANTE

Por favor traten de indicar la versión de SQL y Service Pack.
La inclusión de (CREATE, INSERTS, etc.) para poder reproducir el
problema también ayuda.
Respuesta Responder a este mensaje
#2 Maxi
11/04/2007 - 22:34 | Informe spam
Hola, eso no lo puedes cambiar, los trigger no funcionan por registros sino
por conjuntos, lo que debes hacer es pensar el trigger y desarrollarlo para
que funcione con conjuntos, para ello tenes las tablas inserted y deleted
que debes utilizar dentro del mismo.

Gracias!


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Ronald Espinosa" escribió en el mensaje
news:eyyA$
Hola a todos,

Tengo un Trigger de DELETE en una tabla en SQL Server 2005, el problema es
que cuando envío una sentencia
DELETE FROM Tabla1 Where codigo = '01'

La condición afecta varios registros, el problema es que solamente me
ejecuta el Trigger una sola vez pero si elimina todos los registros que
cumplen la condición.

Definí el Trigger de la siguiente manera:

CREATE TRIGGER Trigger_Delete
ON Tabla1
FOR DELETE
AS
BEGIN
Print 'Inicio'
END

NOTA: También cambié la opción FOR por AFTER y el resultado es el mismo.


Gracias por su ayuda.


Ronald.

Respuesta Responder a este mensaje
#3 Gustavo Larriera (MVP)
12/04/2007 - 18:02 | Informe spam
Todos los registros afectados por el trigger, los puedes acceder desde
adentro del trigger usando la tabla Deleted.

Usa dicha tabla para procesar uno a uno cada registro que va a ser eliminado.

Gustavo Larriera, MVP
http://aspnet2.com/mvp.ashx?GustavoLarriera
http://blogs.solidq.com/ES/glarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Ronald Espinosa" wrote:

Hola a todos,

Tengo un Trigger de DELETE en una tabla en SQL Server 2005, el problema es
que cuando envío una sentencia
DELETE FROM Tabla1 Where codigo = '01'

La condición afecta varios registros, el problema es que solamente me
ejecuta el Trigger una sola vez pero si elimina todos los registros que
cumplen la condición.

Definí el Trigger de la siguiente manera:

CREATE TRIGGER Trigger_Delete
ON Tabla1
FOR DELETE
AS
BEGIN
Print 'Inicio'
END

NOTA: También cambié la opción FOR por AFTER y el resultado es el mismo.


Gracias por su ayuda.


Ronald.



Respuesta Responder a este mensaje
#4 Alejandro
16/04/2007 - 13:32 | Informe spam
Puedes hacer un select * from inserted/deleted y trabajar con el select o
también puedes usar un cursor para recorrer todos los registros afectados
(insertados o borrados)

Saludos

"Ronald Espinosa" escribió en el mensaje
news:eyyA$
Hola a todos,

Tengo un Trigger de DELETE en una tabla en SQL Server 2005, el problema es
que cuando envío una sentencia
DELETE FROM Tabla1 Where codigo = '01'

La condición afecta varios registros, el problema es que solamente me
ejecuta el Trigger una sola vez pero si elimina todos los registros que
cumplen la condición.

Definí el Trigger de la siguiente manera:

CREATE TRIGGER Trigger_Delete
ON Tabla1
FOR DELETE
AS
BEGIN
Print 'Inicio'
END

NOTA: También cambié la opción FOR por AFTER y el resultado es el mismo.


Gracias por su ayuda.


Ronald.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida