2016-02-08 3 views
0

Я использую SQL Server, и мне интересно, есть ли способ создать триггер в таблице, который позволяет копировать исходные данные перед обновлением, а также копировать измененные данные после обновления в другой таблице?Как создать триггер, который копирует в другую таблицу исходные и отредактированные данные из таблицы?

Если да, то как я могу сделать разницу между обоими?

Спасибо :)


@SouravA

create trigger SomeBeforeUpdateTrigger 
on YourTable 
before update 
as 
insert into SecondTable (ID, Name) 
select ID, Name 
from deleted; 
go 
insert into SecondTable (ID, NewName) 
select ID, Name 
from inserted; 
+0

Да, это возможно. – jarlh

+0

@jarlh Но как сделать разницу между оригинальными и отредактированными данными? – STDLN

ответ

0

Если я правильно понимаю, да, это возможно. Вам в основном нужен триггер BEFORE UPDATE.

create trigger SomeBeforeUpdateTrigger 
on YourTable 
before update 
as 
insert into BeforeUpdate (ID, Name) 
select ID, Name 
from deleted; 
go 
insert into AfterUpdate (ID, Name) 
select ID, Name 
from inserted;  

Первый оператор будет вставлять эти строки в таблицу BeforeUpdate, которые становятся все изменилось. Второй будет вставлять новые строки в таблицу AfterUpdate.

+0

Спасибо! Более того, мне нужно вставить как до, так и после обновления данные в той же таблице. Поэтому, возможно, я мог бы использовать это: проверьте выше в сообщении – STDLN

+0

Конечно, вы можете использовать ту же таблицу вместо этого. Добавьте столбец временной метки, где вы можете сопоставить 'getdate()'. – SouravA

+0

@STDLN - pls отметьте его как ответ, если это поможет. – SouravA

Смежные вопросы