我有一个触发器,类似下面这样,在用户表上插入到审计表中,记录更新的列和先前的值:
ALTER TRIGGER [dbo].[trgAfterUpdate] ON [dbo].[tbl_User]
AFTER UPDATE
AS
declare @fieldname varchar(128) ;
declare @OldValue varchar(255);
declare @CreateUser varchar(100) ;
declare @User_Key int;
select @CreateUser =i.user_name from deleted i;
SELECT @User_Key = i.user_key from inserted i;
if update(user_name)
begin
select @OldValue=j.user_name from deleted j;
set @fieldname = 'user_name';
insert into tbl_Audit(user_key, field_name, previuos_Value, user_name)
values(@User_Key ,@fieldname,@OldValue, @CreateUser);
end
我的问题是,我在表格上有100个字段。我不能写出100个if条件语句。我需要建议如何在其中使用while循环,并且它会如何影响性能。
谢谢
FOR XML
将整行转换为 XML,并将 XML 列存储在审计表中。 - JNKinserted
和deleted
中的每一列,然后输出它们之间的差异。我告诉你,你想要做的这件事是存在问题的,你应该考虑使用其他的方法。 - JNK