我有表tab
,我想创建一个表History
来插入在表中进行的更新tab
。为此,我创建了触发器tr_update
,但是它不能正常工作。
Create table Tab
(
id_tab char(5),
data_tab int
)
Create table History
(id_modify char(3),
old_data int,
new_data int,
)
Create trigger tr_update
on tab
after update
as
declare @id char(3)
declare @old int
declare @new int
select @id=id_tab, @new=data_tab from inserted
select @old=data_tab from deleted
insert into History (id_modify,old_data,new_data)
values (@id,@old,@new)
触发器适用于数据集,这意味着数据集inserted
和deleted
可以包含多个行,并且简单的分配将不起作用。相反,您可以使用inserted
和deleted
作为源表(在这种情况下,如果希望同时使用新数据和旧数据,可以将它们联接起来)。
Create trigger tr_update
on tab
after update
as
insert into History (id_modify,old_data,new_data)
select i.id_tab, d.data_tab, i.data_tab
from inserted i
inner join deleted d on i.id_tab = d.id_tab
顺便说一句,似乎id_data
历史记录表中的文件只有3个字符宽,而原始表中的文件有5个字符宽。这可能行不通;历史记录表中的字段必须大小相同(或更宽),否则服务器将不允许插入,因为数据可能会被截断。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句