Trigger no se ejecuta con delete?

21/02/2004 - 00:03 por Omar Javier Arana | Informe spam
Buen dia soy nuevo en el t-sql y tengo una consulta, en una tabla defini un
trigger que se debe ejecutar cuando un usuario modifica, inserta o elimina
un registro, el problema se da porque ejecuta el trigger cuando inserta o
modifica pero no cuando elimina un registro, adicionalmente me gustaria que
este se ejecutara antes de realizar la accion (inmagino que por ejecutarse
despues de la accion no funciona el delete auditado), como puedo hacerlo.
Adicionalmente sobre el mismo trigger me gustaria indicarle al sistema de
que maquina fue ejecutado y el tipo de programa que lo ejecuto. Saludos y
gracias por su ayuda.

/* Trigger de Monitoreo */
CREATE TRIGGER trCCIngresos
ON CCIngresos
FOR DELETE, INSERT, UPDATE
AS
BEGIN
INSERT INTO CCIngresosBitacora (Fecha,Cuenta,Recibo, Operacion)
SELECT ins.Fecha, ins.cuenta, ins.recibo, 'INSERTA'
FROM inserted ins
END
 

Leer las respuestas

#1 Gustavo Larriera [MVP SQL]
21/02/2004 - 00:20 | Informe spam
Lo que sucede es que estas insertando en tu bitacora CCIngresosBitacora
solamente los registros de la tabla 'inserted' (que se populan con datos
cuanod el trigger fue disparado por INSERT o por UPDATE, pero no por un
DELETE).

Para el caso de trigger FOR DELETE, debes insertar en la bitacora los datos
de la tabla 'deleted'

INSERT INTO CCIngresosBitacora (Fecha,Cuenta,Recibo, Operacion)
SELECT ins.Fecha, ins.cuenta, ins.recibo, 'INSERTA'
FROM deleted ins

Estudia la posibilidad de usar las opciones INSTEAD OF del trigger, puedes
estudiarlo en los Books Online (BOL).

Saludos
gux

Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho.


"Omar Javier Arana" wrote in message
news:ObWN6TA%
Buen dia soy nuevo en el t-sql y tengo una consulta, en una tabla defini


un
trigger que se debe ejecutar cuando un usuario modifica, inserta o elimina
un registro, el problema se da porque ejecuta el trigger cuando inserta o
modifica pero no cuando elimina un registro, adicionalmente me gustaria


que
este se ejecutara antes de realizar la accion (inmagino que por ejecutarse
despues de la accion no funciona el delete auditado), como puedo hacerlo.
Adicionalmente sobre el mismo trigger me gustaria indicarle al sistema de
que maquina fue ejecutado y el tipo de programa que lo ejecuto. Saludos y
gracias por su ayuda.

/* Trigger de Monitoreo */
CREATE TRIGGER trCCIngresos
ON CCIngresos
FOR DELETE, INSERT, UPDATE
AS
BEGIN
INSERT INTO CCIngresosBitacora (Fecha,Cuenta,Recibo, Operacion)
SELECT ins.Fecha, ins.cuenta, ins.recibo, 'INSERTA'
FROM inserted ins
END







Preguntas similares