Trigger

20/01/2004 - 23:26 por Juan F Botero | Informe spam
Saludos
tengo el siguiente trigger. basicamente lo que hace es llevar una auditoria
de actualizaciones de dos campos de la tabla de ot en auditoria de ot.

CREATE TRIGGER [t_audi] ON [ot]
FOR UPDATE
AS

IF UPDATE(linea) or UPDATE(rlinea)

INSERT INTO AUDITORIA_OT(FECHA_OPERACION,
custom,fecha_cliente,codigo_manual,linea,usuario,maquina)
select getdate(),
t_custom,getdate(),t_codigo_manual,rlinea,SYSTEM_USER,host_name() from ot
where t_custom = 23 and t_date = '2003-01-20'

la pregunta es, como le paso los parametros al where de (t_custom) y
(t_date.) con los datos del registro modificado, para obtener los datos que
voy a grabar en auditoria_ot?

gracias por sus comentarios.
 

Leer las respuestas

#1 Javier Loria
21/01/2004 - 16:50 | Informe spam
Hola:
En principo te recomendaria que cambiaras el esquema de la Tabla de
Auditoria para que tuviera como DEFAULT las funciones GETDATE(), SYSTEM_USER
y HOST_NAME y asi evitas tener que escribir estas funciones en el INSERT.
Adicionalmente el FROM debe venir de la Tabla T_Audi ya que sino
probablemente estarias duplicando las filas:
/* Codigo del Insert */
INSERT INTO AUDITORIA_OT
(Custom, Codigo_Manual, Linea)
SELECT T_Custom,
T_Codigo_Manual,
RLinea
FROM INSERTED

Todo esto es si lo que quieres es insertar el nuevo valor, si quieres
insertar el valor viejo es un poco mas complejo y deber relacionar la tabla
INSERTED con la Tabla T_Audi basado en su llave primaria y asumiendo que
dicha llave no cambia.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Juan F Botero escribio:
Saludos
tengo el siguiente trigger. basicamente lo que hace es llevar una
auditoria de actualizaciones de dos campos de la tabla de ot en
auditoria de ot.

CREATE TRIGGER [t_audi] ON [ot]
FOR UPDATE
AS

IF UPDATE(linea) or UPDATE(rlinea)

INSERT INTO AUDITORIA_OT(FECHA_OPERACION,
custom,fecha_cliente,codigo_manual,linea,usuario,maquina)
select getdate(),
t_custom,getdate(),t_codigo_manual,rlinea,SYSTEM_USER,host_name()
from ot where t_custom = 23 and t_date = '2003-01-20'

la pregunta es, como le paso los parametros al where de (t_custom) y
(t_date.) con los datos del registro modificado, para obtener los
datos que voy a grabar en auditoria_ot?

gracias por sus comentarios.

Preguntas similares