相关疑难解决方法(0)

如何使用 COLUMNS_UPDATED 检查某些列是否已更新?

我有一个包含 42 列的表和一个触发器,当这些列中的 38 列更新时,它应该做一些事情。因此,如果其余 4 列发生更改,我需要跳过逻辑。

我可以使用UPDATE()函数并创建一个大IF条件,但更喜欢做一些更短的事情。使用COLUMNS_UPDATED我可以检查是否所有某些列都更新了?

例如,检查第 3、5 和 9 列是否更新:

  IF 
  (
    (SUBSTRING(COLUMNS_UPDATED(),1,1) & 20 = 20)
     AND 
    (SUBSTRING(COLUMNS_UPDATED(),2,1) & 1 = 1) 
  )
    PRINT 'Columns 3, 5 and 9 updated';
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

因此,203和的5值,以及1列的值,9因为它设置在第二个字节的第一位。如果我将语句更改为OR它会检查列3和/5或列9是否更新?

如何OR在一个字节的上下文中应用逻辑?

trigger sql-server t-sql

14
推荐指数
1
解决办法
3万
查看次数

标签 统计

sql-server ×1

t-sql ×1

trigger ×1