在更新触发器和更改字段之前
如果一个记录被更新了,我有一个触发器来处理数据中的一些列,其中一个字段是“数量”,当其他的列/字段被更改时,它可以更改也可以不更改,从而导致触发器被执行
如果数量改变了,我想执行逻辑,如果没有改变,我不想采取任何行动,“数量”的值保持不变。
似乎如果数量不变,“旧数量”和“新数量”的值就不同了
我可以使用什么条件来查看“数量”是否已更改
如果“数量”不变,new.qty=“null”的值将保持不变
在更新触发器和更改字段之前
如果一个记录被更新了,我有一个触发器来处理数据中的一些列,其中一个字段是“数量”,当其他的列/字段被更改时,它可以更改也可以不更改,从而导致触发器被执行
如果数量改变了,我想执行逻辑,如果没有改变,我不想采取任何行动,“数量”的值保持不变。
似乎如果数量不变,“旧数量”和“新数量”的值就不同了
我可以使用什么条件来查看“数量”是否已更改
如果“数量”不变,new.qty=“null”的值将保持不变
1条答案
按热度按时间3yhwsihp1#
当柱
c1
是不变的,aBEFORE UPDATE
触发器将有OLD.c1
以及NEW.c1
设置为相同的值,因为这是更新前后的值。表达式
(OLD.c1 <=> NEW.c1)
评估为TRUE
当列值不变时,elseFALSE
.表达式
(NOT (OLD.c1 <=> NEW.c1))
评估为TRUE
如果列值更改,则为FALSE
.不要使用
=
或者!=
或者<>
对于更新触发器中的比较,除非您完全理解3vl的含义,因为它们不是空安全运算符。