【发布时间】:2014-04-25 07:21:16
【问题描述】:
我是 SQL Server 2008 的新手,我需要大家的建议。我想找出 SQL Server 2008 的 inserted 和 deleted 表中的更改值,因为我目前正在执行审计跟踪以保留旧值和新值。如何循环所有列以找出删除和插入表中哪个字段的值更改?我曾尝试使用 if else 语句进行比较
例如:
create trigger trg_XXX on dbo.table
after update
as
begin
declare
@oldID varchar(6),
@newID varchar(6)
select @oldID = ID from deleted
select @newID = ID from inserted
if(@oldID != @newID)
insert into table (a, b) values (@oldID, @newID)
else
print('do nothing')
有没有办法使用游标循环删除和插入的表或任何替代方式?可以举个例子吗?
【问题讨论】:
-
插入和删除表是什么意思?此代码是否是创建审核的触发器的一部分?
-
inserted and deleted table是sql server 2008中的临时表,可以从deleted表中获取旧值,从inserted表中获取新值。
-
这些是伪(“虚拟”)表,仅存在于触发器的上下文中 - 但请 在触发器中不使用游标!这是扼杀你所有表现的最糟糕的方式.....
标签: sql sql-server sql-server-2008 audit-trail