pepe
create table dbo.Auditoria
(
Nombre_tabla varchar(20) not null,
Tipo_comando char(3) not null,
Nombre_usuario varchar(20) not null,
Detalle_cambios xmlnot null,
Fecha_cambios datetime not null
)
go
create trigger ins_Customer on dbo.Customer
after insert as
begin
declare @xml xml
set @xml = (
select * from inserted
for xmlauto, elements, root('table'))
insert dbo.Auditoria
values ( 'dbo.CUSTOMER', 'Ins', suser_name(), @xml, getdate() )
end
Para un trigger After Update el trigger sería:
create triggerupd_Customer on dbo.Customer
after update as
begin
declare @xml xml
set @xml = (
select * from inserted
for xml auto, elements, root('table'))
insert dbo.Auditoria
values ('dbo.CUSTOMER', 'Upd', suser_name(), @xml, getdate() )
end
Para un trigger After Delete el trigger sería:
create trigger del_Customer on dbo.Customer
after delete as
begin
declare @xmlxml
set @xml = (
select * from deleted
for xml auto, elements, root('table'))
insert dbo.Auditoria
values ( 'dbo.CUSTOMER', 'Del', suser_name(), @xml, getdate() )
end
Paraaplicar los mismos triggers DML a otras tablas, la lógica de los triggers es esencialmente la misma, sin importar la tabla.
A partir de SQL Server 2005, estos eventos pueden capturarse también medianteEvent Notifications (esta solución es mejor, pero también mas compleja de implementar, y requiere del conocimiento de Even Notifications, Service Broker, la metadata de Eventdata y XQuery).Publicado por cio_icon en 06:30
3 COMENTARIOS:
yulumule dijo...
excellent articles, useful for me. keep writing and happy blogging.
generic cialis
25 de abril de 2011 13:00
Anónimo dijo...Good post my friendo
15 de noviembre de 2011 08:18
Anónimo dijo...
hola amigo me parece excelente este código de auditoria es muy sencillo de implementar, solo me gustaría saber como se puede...
Regístrate para leer el documento completo.