将记录从DB写入varchar变量/更新触发器

时间:2011-11-02 00:56:28

标签: sql sql-server-2008 tsql

我有两个问题并寻求帮助:)

我必须在sys表上创建触发器以记录任何更改,例如。更新,删除和插入。

我想在表中保存日志,这些日志将有一列来存储来自记录的数据(旧的或新的 - 插入/删除)或存储新旧版本的记录(更新)之间的差异。

我的问题是如何存储此信息,尤其是如何将简单记录“转换”为字符串,以及如何记录更新。我以为我可以使用类似的东西:

exec ('select ' + @col + ' from deleted')

在跳跳虎的身体但它不起作用。

@col变量是列的名称。我不知道列的名称及其计数(我希望我的触发器应该是每个表的通用)。存储列名称我根据命令使用游标:

select 
  COLUMN_NAME 
from 
  INFORMATION_SCHEMA.COLUMNS 
where 
  TABLE_NAME = (SELECT object_name(parent_obj) 
                FROM sysobjects WHERE id = @@procid)

请帮助:)

1 个答案:

答案 0 :(得分:0)

虽然您可以设置非常sophisticated auditing mechanism in SQL server - 但您可能会发现这篇文章很有用 - it shows simple scripts for basic auditing