MySQL在同一个表上更新后触发

时间:2013-03-14 16:11:22

标签: mysql triggers

我有一个使用BEFORE INSERT ON table的MySQL触发器计算一个值,并在用户在特定列中插入值后更新同一个表。这按预期工作。但是用户在输入时出错并修复了错误,我想编写一个触发器,在错误修复后更新计算出的值。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:5)

BEFORE UPDATE ON table触发器可以访问行中的现有值以及新提供的值,并且可以根据您需要的条件和表达式设置表中任何列的值。

例如,可以测试是否修改了一个或多个关注列的值,然后将其他列设置为某个表达式。

CREATE TRIGGER my_before_update_trigger
BEFORE UPDATE ON my_table
FOR EACH ROW
BEGIN
   IF NOT ((NEW.col1 <=> OLD.col1) AND (NEW.col2 <=> OLD.col2)) THEN
      SET NEW.col3 = NEW.col1 * NEW.col2 ;
   END IF;
END$$