2013-02-22 55 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行。