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 ;
谢谢,但这只是特定于MySQL? – cldy1020 2012-04-28 01:12:52
@ ms1020:您还有哪些其他关系型数据库管理系统? – eggyal 2012-04-28 06:47:00
现在我只能使用mysql。只是想知道是否有其他RDBMS有这个限制。我知道ORACLE支持列更新。 – cldy1020 2012-05-01 02:58:15