如何确定哪些列已更新?

时间:2016-01-10 15:30:15

标签: sql-server

我的表有90列。

如何确定哪些列已更新?

通过

UPDATE(@COLUMN_NAME) 

[CURSOR中的@ COLUMN_NAME]

2 个答案:

答案 0 :(得分:0)

您可以根据表格的UPDATE语句创建TRIGGER来确定这一点。然后可以在TRIGGER定义中使用COLUMNS_UPDATED函数来确定哪些列已更新。

COLUMNS_UPDATED函数返回VARBINARY位模式,指示已插入或更新的表或视图中的列。

例如,如果第一列已更新,则条件COLUMNS_UPDATED()&1为true。如果第二列已更新,则COLUMNS_UPDATED()&2为真。如果第三列已更新,则COLUMNS_UPDATED()&4为真,依此类推。

您可以通过组合位模式来测试是否已更新多个列。例如,如果第1列和第2列都已更新,则条件COLUMNS_UPDATED()&3为真。二进制形式0001 | 0010等于0011,十进制形式的等效形式为1 | 2等于' 3'。

答案 1 :(得分:0)

第2栏更新: COLUMNS_UPDATED():0x02000000000000000000

0x02000000000000000000& 2 - > 0

SUBSTRING(0x02000000000000000000,1,1):0x02

0x02& 1:1

0x02& 2:2

0x02& 3:3