对于某些背景......我有一组表格,我希望INSERT, UPDATE, DELETE
的每个表都有一个触发器。 SQL Server版本是SQL 2005。
我有一个审核表Audit
,其中包含一个名为Detail
的列。我的最终目标是创建一个触发器,它将获取其表的列列表,从Inserted,Updated或Deleted生成动态选择查询,执行一些字符串连接,并将该值转储到Detail
列Audit
。
这是我想的过程:
sys.columns
SELECT
查询Inserted
Detail
列所以,问题:
这是完成我要做的事情的最佳方式吗?更重要的问题是,如何编写此查询?
答案 0 :(得分:3)
您可以使用FOR XML,只将结果存储为XML文档。
SELECT *
FROM Inserted
FOR XML RAW
将为您提供以attibute为中心的xml和
SELECT *
FROM Inserted
FOR XML PATH('row')
将为您提供以元素为中心的xml。比试图识别列并连接它们容易得多。