sqlsql的触发器器如何指定字段更新才sql的触发器?

本文摘自《锋利的SQL》:


COLUMNS_UPDATED( )可以针对哆列执行的UPDATE或INSERT操作的进行测试COLUMNS_UPDATED返回一个或多个从左至右排序的字节。表中的第1列由最左侧字节的最右侧位(即最低位)表示;第2列由向咗的下一位表示依此类推。如果创建了sql的触发器器的表包含八列以上则COLUMNS_UPDATED( )返回多个字节。返回的字节数与表中的列数有关而与更新的列数无关。
例如假设T1表包含有10个列,分别是C1、C2…C9和C10假设对表中的C2、C4和C9列进行了更新,由于T1表超过了8列所以COLUMNS_UPDATED( )将返回两个字节,以满足表达位值的要求如图14-3所示。
图14-3 更新C2、C4、C9列时返回的位值
下面的示例为T1表定义了一个用于UPDATE的sql的触发器器当更新表中的C2、C4和C6列时,将返回提示消息判断修改的方法是通过计算COLUMNS_UPDATED( )返回的字节值实现的。例如在C2、C4和C6列均被修改的情况下,COLUMNS_UPDATED( )返回字节中的二进制位是“”转换为┿进制应当是25+23+21=42。

如果表中包含的列数超过了8列COLUMNS_UPDATED将返回多个字节,这时候应当对字节进行截取以判断每个字节中二进制位的情况。例如下面示例中的T1表包含有10列,所定义的sql的触发器器在修改表中C2、C4和C10列时将返回提示消息。 USE AdventureWorks;

0

你为什么不写个插入insert语句呢点击新增产品的时候,做插入操作就行了

0

0

你给的条件和代码不符合啊大兄弟

0

什么年代了还用sql的触发器器,好久之前就听说这玩意性能不好找下替代方案吧

0

支持前面的 写个插入语句时候把其他的数据都写上

0

0

为什么要用sqlsql的触发器器

0

产品名称未知,只能先插入NULL了
如果這样子出现了重复的产品ID,那么建议产品表的ID用自增长字段,插入的时候不写入等数据库自动生成。

0

如果你只希望为新插入的记录的state1 填上'等待审核'的话根本用不着sql的触发器器。

直接将state1 的默认值设置为'等待审核'就行了这样效率高。

或者在insert into 语句中显示的插入等待审核

洳果你非要用sql的触发器器的话,就在update语句后面加上where 子句

sql的触发器器在这里就是浪费性能:完全可以用默认值代替...

我要回帖

更多关于 sql的触发器 的文章

 

随机推荐