sql 检测更新触发器中修改的字段(sql server 2005)?

Posted

技术标签:

【中文标题】sql 检测更新触发器中修改的字段(sql server 2005)?【英文标题】:sql to detect fields modified in update trigger ( sql server 2005 )? 【发布时间】:2009-01-12 08:55:17 【问题描述】:

在 sql server 2005 中,在更新触发器中可以找到由原始更新查询修改的字段\列的列表。

我有一个包含 150 列的表,并且在触发器内部需要知道是否只更新了一个特定字段(并且没有修改其他字段)

我可以写一个很长的 sql 来比较 150 列,但它容易出错并且看起来很愚蠢!

解决这个问题的任何体面的方法。我希望一些 sql2005 api 能来救我。

【问题讨论】:

看看这个答案***.com/a/8020461/350188,它非常适合在较大的表格中挑选几个字段。也比使用 columns_updated 更痛苦 【参考方案1】:

看看COLUMNS_UPDATED - 这有点痛苦,但你应该能够很容易地根据你的要求使用它。 SQL Server Central 上有一篇不错的文章。

【讨论】:

以上是关于sql 检测更新触发器中修改的字段(sql server 2005)?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server2008 触发器中,根据一个表修改另外一个表

关于使用sql server 2008触发器完成修改一张表里一个字段同时修改另一张表的另一字段

特定场景下SQL的优化

sql2008企业管理器中修改字段值报:将截断字符串或二进制数据。说字段长度不够的请绕开。

更新一个表的字段值等于另一个表的字段值的SQL语句

oracle update触发器如何获取被修改的字段