16

我们可以在更新特定列时使用 MySQL 触发器,它会更新同一表中的另一列(同一行)

create trigger my_trigger
BEFORE UPDATE OF col1, col2 ON TABLE_NAME
for each row
set NEW.col3 =  NEW.col3 +1;

我尝试使用上面的代码UPDATE OF col1, col2。它在 MySQL 中不起作用。什么是正确的语法,有人可以指点我一些例子。

4

1 回答 1

20

您不能指定触发器仅在特定列的更新时运行(UPDATE影响整个记录),但您可以测试触发器中哪些列已更新:

DELIMITER ;;

CREATE TRIGGER my_trigger BEFORE UPDATE ON TABLE_NAME FOR EACH ROW
IF NOT (NEW.col1 <=> OLD.col1 AND NEW.col2 <=> OLD.col2) THEN
  SET NEW.col3 = NEW.col3 + 1;
END IF;;

DELIMITER ;
于 2012-04-27T20:22:43.083 回答