我从这里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