Crear historia de cambios en una tabla
Quisiera tener la historia de los cambios hechos sobre una tabla t1
donde solo pueden variar 2 campos (c1 y c2) por ejemplo:
Create table t1 (idt int IDENTITY(1,1) PRIMARY KEY, nt varchar(50), c1
int, c2 int)
Lo primero que se me ocurre es crear otra tabla t1s con la siguiente estructura:
create table t1s (idt int, c1 int, c2 int, fecha smalldatetime
default getdate())
y en la tabla t1 programarle un trigger
CREATE TRIGGER cambia ON [dbo].[t1]
FOR update
AS
if update(c1) or update(c2)
insert into t1s
select idt,c1,c2 from deleted
Ahora si quisiera saber el estado de la tabla t1 hasta la actualidad basta
select * from t1
Pero si quisiera saber el estado hace una semana ¿cómo sería?
¿O alguien tiene una mejor idea?
¿En este caso se me ocurre si hago más de un cambio en un articulo el
mismo día no se como resolverlo pues entonces me aparecerían en t1s
los dos el mismo día y en el caso de que borre el artículo que hacer
crear otra tabla para los artículos borrados?
En fin agradecería cualquier ayuda
Santiago
Trabajo SQL Server 2000
donde solo pueden variar 2 campos (c1 y c2) por ejemplo:
Create table t1 (idt int IDENTITY(1,1) PRIMARY KEY, nt varchar(50), c1
int, c2 int)
Lo primero que se me ocurre es crear otra tabla t1s con la siguiente estructura:
create table t1s (idt int, c1 int, c2 int, fecha smalldatetime
default getdate())
y en la tabla t1 programarle un trigger
CREATE TRIGGER cambia ON [dbo].[t1]
FOR update
AS
if update(c1) or update(c2)
insert into t1s
select idt,c1,c2 from deleted
Ahora si quisiera saber el estado de la tabla t1 hasta la actualidad basta
select * from t1
Pero si quisiera saber el estado hace una semana ¿cómo sería?
¿O alguien tiene una mejor idea?
¿En este caso se me ocurre si hago más de un cambio en un articulo el
mismo día no se como resolverlo pues entonces me aparecerían en t1s
los dos el mismo día y en el caso de que borre el artículo que hacer
crear otra tabla para los artículos borrados?
En fin agradecería cualquier ayuda
Santiago
Trabajo SQL Server 2000
1 Respuesta
Respuesta de marcelocf
1