在更新触发器和更改字段之前,新旧

时间:2018-06-23 16:04:22

标签: mysql mysql-workbench

在更新触发和更改字段之前,新旧

如果一条记录被更新,我会有一个触发器来操纵数据中的某些列 一个字段是“ QTY”,当更改其他列/字段时可以更改或不更改 导致触发器被执行

如果更改了数量,我想执行逻辑,如果没有更改,我想不执行任何操作 并保留“ QTY”的值不变。

如果未更改“数量”,则似乎“ OLD.QTY”和“ NEW.QTY”具有不同的值

我可以使用什么条件查看“数量”是否已更改

如果“ QTY”不变,则NEW.QTY =“ null”的值将保持一致

1 个答案:

答案 0 :(得分:0)

当列c1不变时,BEFORE UPDATE触发器将OLD.c1NEW.c1设置为相同的值,因为该值既是更新。

当列值不变时,表达式(OLD.c1 <=> NEW.c1)的计算结果为TRUE,否则为FALSE

如果列值已更改,则表达式(NOT (OLD.c1 <=> NEW.c1))的计算结果为TRUE,否则为FALSE

请勿使用=!=<>进行更新触发器中的比较,除非您完全理解3VL的含义,因为它们不是null安全运算符。