MySQL的触发器“对列的更新”

问题描述:

我们可以使用特定列的更新MySQL的触发器,它在更新同一个表(同一行)的另一列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。什么是正确的语法,有人可以给我一些例子。

您不能指定触发将要在具体列上的更新只运行(一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 ; 
+0

谢谢,但这只是特定于MySQL? – cldy1020 2012-04-28 01:12:52

+0

@ ms1020:您还有哪些其他关系型数据库管理系统? – eggyal 2012-04-28 06:47:00

+4

现在我只能使用mysql。只是想知道是否有其他RDBMS有这个限制。我知道ORACLE支持列更新。 – cldy1020 2012-05-01 02:58:15