2013-02-22 56 views
1

比方说,我有这些可能出现的问题:MySQL更新触发器 - 如何检测未被忽略的值?

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

tableBEFORE UPDATE触发计算基于field1field2一个新的价值,但我希望它只能这样做,如果我不明确传递一个值。

我检测了更改field1IF OLD.field1 != NEW.field1 THEN ...,但我怎么检测传递field2与否,不管值实际上改变?

回答

1

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

在Oracle中,如果field2未通过更新传递,您将获得NULL。

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