【发布时间】:2014-09-24 16:13:31
【问题描述】:
我有一个触发器,它注册了我在表tab 中所做的更新,并将新旧值放入一个名为history 的表中。但是这个触发器只对简单的更新有用,比如
UPDATE tab
set col1='value'
where id_tab=1
因为在id_tab 中只有一个寄存器取值 1。但是,如果我想执行类似
UPDATE tab
set col1='value'
where col2=10
假设col2 有几个值为 10 的注册表,那么我将无法在历史表中执行注册。
我可以在触发器中添加什么?我试图放置游标,但我不太确定如何处理它
Create table Tab
(id_tab smallint,
col1 varchar(5),
col2 varchar(5),
)
Create table History
(id_modify char(3),
old_data int,
new_data int,
)
Create trigger tr_update
on tab
after update
as
declare curs1 scroll cursor for select col2 from tab
open curs1
insert into History (id_modify,old_data,new_data)
select i.id_tab, d.col1, i.col1
from inserted i
inner join deleted d on i.id_tab = d.id_tab
fetch next from curso1
【问题讨论】:
标签: sql-server triggers cursor