fecha de ultima modificacion de tabla

04/07/2003 - 21:47 por Daniel | Informe spam
Hola lista

saben en que tabla de sistema se encuentra la ultima fecha de modificacion
de una tabla cualquiera?? me refiero a la modificacion de ls registros

gracias
 

Leer las respuestas

#1 Eladio Rincon
05/07/2003 - 13:33 | Informe spam
Hola,

puedes crear un trigger sobre la tabla que quieres auditar; aquí te pongo un
ejemplo que te puede ser de utilidad; la idea es crear el trigger sobre la
tabla que quieres registrar las modificaciones, y crear una tabla histórica
donde se registra la operacion ( I,U,D) y el nombre de la tabla.

Espero que te sirva,

create table foo3
( id int PRIMARY KEY)
go

create table hist
( tabla varchar(100), operacion char(1), fecha datetime, constraint PK
primary key (tabla, operacion) )
go

CREATE trigger trr_foo3 on foo3 after insert, update, delete
as
if ( select count(*) from inserted ) > 0 AND ( select count(*) from
deleted ) > 0
begin
if ( select count(*) from hist where
tabla = 'foo3' and operacion = 'U' ) > 0
update hist
set fecha = getdate()
where
tabla = 'foo3' and operacion = 'U'

else
insert into hist ( tabla, operacion, fecha ) values
( 'foo3', 'U', getdate() )
return
end

if ( select count(*) from inserted ) > 0
begin
if ( select count(*) from hist where
tabla = 'foo3' and operacion = 'I' ) > 0
update hist
set fecha = getdate()
where
tabla = 'foo3' and operacion = 'I'

else
insert into hist ( tabla, operacion, fecha ) values
( 'foo3', 'I', getdate() )
end

if ( select count(*) from deleted ) > 0
begin
if ( select count(*) from hist where
tabla = 'foo3' and operacion = 'D' ) > 0
update hist
set fecha = getdate()
where
tabla = 'foo3' and operacion = 'D'

else
insert into hist ( tabla, operacion, fecha ) values
( 'foo3', 'D', getdate() )
end

-

Como último comentario, podrías hacer uso de lo siguiente:

declare @tabla as sysname
select @tabla = object_name ( parent_obj )
from sysobjects
where name = 'trr_foo3'
select @tabla as tabla

De esta forma podrías evitar tener que escribir el nombre de la tabla a la
que hace referencia el trigger en cada operación que se gestione: sé que son
tablas de sistema, pero no he podido utilizar information_schema porque el
standard SQL-92 no implementa los triggers de la base de datos. El SQL-99 si
lo implementa por lo que es posible que tengamos suerte en Yukon.


Saludos,

Eladio Rincón
MCP, SQL Server MVP
http://eu.webmatrixhosting.net/Eladio

"Comparte lo que sabes, aprende lo que no sepas", FGG

"Daniel" escribió en el mensaje
news:
Hola lista

saben en que tabla de sistema se encuentra la ultima fecha de modificacion
de una tabla cualquiera?? me refiero a la modificacion de ls registros

gracias


Preguntas similares