在更新触发和更改字段之前,新旧
如果一条记录被更新,我会有一个触发器来操纵数据中的某些列 一个字段是“ QTY”,当更改其他列/字段时可以更改或不更改 导致触发器被执行
如果更改了数量,我想执行逻辑,如果没有更改,我想不执行任何操作 并保留“ QTY”的值不变。
如果未更改“数量”,则似乎“ OLD.QTY”和“ NEW.QTY”具有不同的值
我可以使用什么条件查看“数量”是否已更改
如果“ QTY”不变,则NEW.QTY =“ null”的值将保持一致
答案 0 :(得分:0)
当列c1
不变时,BEFORE UPDATE
触发器将OLD.c1
和NEW.c1
设置为相同的值,因为该值既是更新。
当列值不变时,表达式(OLD.c1 <=> NEW.c1)
的计算结果为TRUE
,否则为FALSE
。
如果列值已更改,则表达式(NOT (OLD.c1 <=> NEW.c1))
的计算结果为TRUE
,否则为FALSE
。
请勿使用=
或!=
或<>
进行更新触发器中的比较,除非您完全理解3VL的含义,因为它们不是null安全运算符。