根据以下SQLFiddle,我需要审核表格中的更改。
触发器应在审计表中插入2条记录,“changes”列应如下所示:
id||1^name||Mr.^
表示第一次插入,并且:
id||1^name||Mrs.^
第二次插入。
SQL语句应该是动态的,它应该循环遍历inserted
和/或deleted
表,对于找到的每一行,循环遍历列并构建一个将被写回的字符串审计表的changes
列。
是否有可能在触发器中实现此目的?是否可以保持触发器通用,因此需要明确知道列名称吗?
答案 0 :(得分:0)
如果我理解正确,您需要使用不同的触发器进行更新,插入和删除。 为每个人尝试这些陈述:
-- for insert
INSERT INTO audit(
item_table,
changes)
SELECT
'titles',
[id] + '|^NULL|' + inserted.[name] + '^'
-- for update
INSERT INTO audit(
item_table,
changes)
SELECT
'titles',
[id] + '|^' + deleted.[name] + '|' + inserted.[name] + '^'
-- for delete
INSERT INTO audit(
item_table,
changes)
SELECT
'titles',
[id] + '|^' + deleted.[name] + '|NULL^'