我有一个定义数据表,我正在使用On UPDATE触发器跟踪更改。目前,我已经通过一系列IF UPDATE([COLUMNNAME])检查来跟踪更改。但是,这样做的问题在于,如果将来再添加/删除/重命名列,则触发器将失败。
我想到了透视DELETED和INSERTED表的方法,将它们从具有标题的单行转换为两列,一列包含行标题,另一列包含行数据。然后将它们连接到标题上,并找到数据部分的不同之处。然后,我可以记录Header,OldData(已删除)和NewData(已插入)值。但是,到目前为止,我还无法做到这一点。我搜索了许多PIVOT和UNPIVOT示例,但是似乎没有一个完全符合我的需求。
例如:
ID Name Value1 Value2 Value3 Value4
1 Apple 10 1/1/18 25 10.0
收件人:
Header Data
ID 1
Name Apple
Value1 10
Value2 1/1/18
Value3 25
Value4 10
任何帮助将不胜感激。
答案 0 :(得分:0)
有时您需要提出不同的问题:如果您看一下示例,实际上就是要将列转换为行。如果我在SO上搜索“ sql将列转换为行”,则第一个结果是this question,答案将解决您的问题。