1

假设我有这些可能的查询:

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

table有一个BEFORE UPDATE触发器可以计算field2基于的新值field1,但我希望它仅在我没有专门传递值时才这样做。

我正在检测对field1with的更改IF OLD.field1 != NEW.field1 THEN ...,但是无论实际值如何变化,我如何检测field2是否通过?

4

1 回答 1

1

如果 MySQL 没有通过 UPDATE 接收到值,field2它将包含NEW.field2.

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

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

于 2013-04-19T20:10:43.523 回答