MySQL更新触发器 - 如何检测未被忽略的值?
问题描述:
比方说,我有这些可能出现的问题:MySQL更新触发器 - 如何检测未被忽略的值?
UPDATE table SET field1 = 2 WHERE id = 1;
UPDATE table SET field1 = 4, field2 = 8 WHERE id = 16;
table
有BEFORE UPDATE
触发计算基于field1
field2
一个新的价值,但我希望它只能这样做,如果我不明确传递一个值。
我检测了更改field1
与IF OLD.field1 != NEW.field1 THEN ...
,但我怎么检测传递field2
与否,不管值实际上改变?
答
如果MySQL通过更新field2
未收到值,它将包含NEW.field2
中的旧值。
在Oracle中,如果field2
未通过更新传递,您将获得NULL。
如果NEW
和OLD
值相同,则可以假定该字段不需要更新。如果所有NEW
值与表中已有的值相匹配,MySQL也将返回更新的0行。