记录对表的修改/更新的SQL Server触发器

时间:2015-04-16 21:17:14

标签: sql sql-server logging triggers

我从这里Log record changes in SQL server in an audit table

有一个与此主题相关的问题

这对我很好,但我对提供的答案有一个跟进问题。在审计表中。我正在尝试从正在审核的表中捕获其中一列。我们称之为列名称' ID'。我已经在审核表中对此列进行了说明,但无法弄清楚如何将其编码到它将捕获的位置' ID'列值并将其存储在审计表中。

有人可以帮助我吗?

基本上来自' TableBeingAudited'有一个名为' ID'

的列

我想要来自' ID'列被捕获并存储在“审计表”中。

我无法弄清楚如何编码。我知道我必须声明它,但无法弄清楚如何将其编码到代码的插入/选择部分:

insert Audit (    Type, 
           TableName, 
           PK, 
           FieldName, 
           OldValue, 
           NewValue, 
           UpdateDate, 
           UserName)
select ''' + @Type + ''',''' 
   + @TableName + ''',' + @PKSelect
   + ',''' + @fieldname + ''''
   + ',convert(varchar(1000),d.' + @fieldname + ')'
   + ',convert(varchar(1000),i.' + @fieldname + ')'
   + ',''' + @UpdateDate + ''''
   + ',''' + @UserName + ''''
   + ' from #ins i full outer join #del d'
   + @PKCols
   + ' where i.' + @fieldname + ' <> d.' + @fieldname 
   + ' or (i.' + @fieldname + ' is null and  d.'
                            + @fieldname
                            + ' is not null)' 
   + ' or (i.' + @fieldname + ' is not null and  d.' 
                            + @fieldname
                            + ' is null)' 
           EXEC (@sql)
   END
END

GO

0 个答案:

没有答案