MySQL更新触发器 - 如何检测未曝光的值?

时间:2013-02-22 21:38:36

标签: mysql triggers

假设我有这些可能的疑问:

UPDATE table SET field1 = 2 WHERE id = 1;
UPDATE table SET field1 = 4, field2 = 8 WHERE id = 16;

table有一个BEFORE UPDATE触发器,可根据field2计算field1的新值,但我希望它只在我没有专门通过时执行此操作价值。

我正在检测field1IF OLD.field1 != NEW.field1 THEN ...的更改,但无论实际更改的值是什么,如何检测到field2是否被传递?

1 个答案:

答案 0 :(得分:1)

如果MySQL没有通过field2的更新收到值,则它将包含NEW.field2中的旧值。

在Oracle中,如果field2未通过更新,则会收到NULL。

如果NEWOLD值相同,则可以假定该字段不需要更新。如果所有NEW值都与表中已存在的值匹配,MySQL也将返回0行更新。