触发器中遇到的问题。

lichehuo227 2009-10-12 03:28:38
if (COLUMNS_UPDATED()&01)>0
update table.....

其中的COLUMNS_UPDATED()&01是什么意思?
能详细给我讲下COLUMNS_UPDATED()这个函数吗?
...全文
103 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangwonderful 2009-10-12
  • 打赏
  • 举报
回复
2楼的阐述很完整
appleller 2009-10-12
  • 打赏
  • 举报
回复
.
--小F-- 2009-10-12
  • 打赏
  • 举报
回复
学习
SQL77 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wufeng4552 的回复:]
对COLUMNS_UPDATED()值的解析
http://blog.csdn.net/wufeng4552/archive/2009/09/29/4617094.aspx
[/Quote]
水哥的很详细
水族杰纶 2009-10-12
  • 打赏
  • 举报
回复
SQL77 2009-10-12
  • 打赏
  • 举报
回复
IF (COLUMNS_UPDATED()) 

测试是否插入或更新了提及的列,仅用于 INSERT 或 UPDATE 触发器中。COLUMNS_UPDATED 返回 varbinary 位模式,表示插入或更新了表中的哪些列。

COLUMNS_UPDATED 函数以从左到右的顺序返回位,最左边的为最不重要的位。最左边的位表示表中的第一列;向右的下一位表示第二列,依此类推。如果在表上创建的触发器包含 8 列以上,则 COLUMNS_UPDATED 返回多个字节,最左边的为最不重要的字节。在 INSERT 操作中 COLUMNS_UPDATED 将对所有列返回 TRUE 值,因为这些列插入了显式值或隐性 (NULL) 值。

可以在触发器主体中的任意位置使用 COLUMNS_UPDATED。

bitwise_operator

是用于比较运算的位运算符。

updated_bitmask

是整型位掩码,表示实际更新或插入的列。例如,表 t1 包含列 C1、C2、C3、C4 和 C5。假定表 t1 上有 UPDATE 触发器,若要检查列 C2、C3 和 C4 是否都有更新,指定值 14;若要检查是否只有列 C2 有更新,指定值 2。

comparison_operator

是比较运算符。使用等号 (=) 检查 updated_bitmask 中指定的所有列是否都实际进行了更新。使用大于号 (>) 检查 updated_bitmask 中指定的任一列或某些列是否已更新。

column_bitmask

是要检查的列的整型位掩码,用来检查是否已更新或插入了这些列

联机丛书

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧