如何在SQL Server触发器中获取更新列的列表?

Mic*_*elT 8 triggers sql-server-2005

我想知道哪些列在更新操作期间更新操作在第一个scaaning书籍在线上看起来像COLUMNS_UPDATED是完美的解决方案但这个函数实际上不检查值是否已更改,它只检查更新子句中选择的列,有人有其他建议吗?

小智 9

我们可以使用Update函数来查找特定列是否已更新:

IF UPDATE(ColumnName)
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此链接:http://msdn.microsoft.com/en-us/library/ms187326.aspx


Dav*_*d M 8

检查值是否已更改的唯一方法是比较触发器中DELETED和INSERTED虚拟表中的值.SQL在更新到新值之前不会检查现有值,它会愉快地在顶部写一个新的相同值 - 换句话说,它会接受您的更新并跟踪更新而不是实际更改.