假设我有这些可能的疑问:
UPDATE table SET field1 = 2 WHERE id = 1;
UPDATE table SET field1 = 4, field2 = 8 WHERE id = 16;
table
有一个BEFORE UPDATE
触发器,可根据field2
计算field1
的新值,但我希望它只在我没有专门通过时执行此操作价值。
我正在检测field1
与IF OLD.field1 != NEW.field1 THEN ...
的更改,但无论实际更改的值是什么,如何检测到field2
是否被传递?
答案 0 :(得分:1)
如果MySQL没有通过field2
的更新收到值,则它将包含NEW.field2
中的旧值。
在Oracle中,如果field2
未通过更新,则会收到NULL。
如果NEW
和OLD
值相同,则可以假定该字段不需要更新。如果所有NEW
值都与表中已存在的值匹配,MySQL也将返回0行更新。