【发布时间】:2012-02-05 02:35:39
【问题描述】:
对于某些背景...我有一组表,我想在每个表上为INSERT, UPDATE, DELETE 设置一个触发器。 SQL Server 版本是 SQL 2005。
我有一个审计表Audit,其中包含一个名为Detail 的列。我的最终目标是创建一个触发器,该触发器将获取其表的列列表,从 Inserted、Updated 或 Deleted 生成动态选择查询,进行一些字符串连接,并将该值转储到 @ 的 Detail 列中987654325@.
这是我想的过程:
- 获取表中
sys.columns的列名 - 根据列名生成动态sql
SELECT查询 - 从
Inserted中选择 - 对于结果中的每一行,将列值连接到单个变量中
- 将变量数据插入
Detail列
所以,问题:
这是完成我想做的事情的最佳方式吗?还有一个更重要的问题,我该如何编写这个查询?
【问题讨论】:
-
你有什么版本的 SQL Server - 2000、2005、2008、2008R2?哪个版本 - 标准版、企业版?如果不少于 2008 年企业 - 您是否检查过 CDC(更改数据捕获)?
标签: sql-server sql-server-2005 dynamic triggers