有没有办法创建MySQL触发器触发在UPDATE或INSERT?在INSERT或UPDATE触发的MySQL触发器?
喜欢的东西
CREATE TRIGGER t_apps_affected BEFORE INSERT OR UPDATE ...
显然,上述不工作。那么,没有创建两个单独的触发器的任何解决方法? 我需要这个以更新另一个表上的运行计数器。
有没有办法创建MySQL触发器触发在UPDATE或INSERT?在INSERT或UPDATE触发的MySQL触发器?
喜欢的东西
CREATE TRIGGER t_apps_affected BEFORE INSERT OR UPDATE ...
显然,上述不工作。那么,没有创建两个单独的触发器的任何解决方法? 我需要这个以更新另一个表上的运行计数器。
不幸的是,没有简写形式 - 您必须创建多个触发器 - 每个事件一个。
的doc说:
trigger_event
表明激活触发器的语句种类。该trigger_event可以是以下的一个:INSERT:每当一个新的行被插入到 表中的触发器被激活;例如,通过INSERT,LOAD DATA和REPLACE 声明。
UPDATE:每当行被修改时触发器被激活;对于 的例子,通过UPDATE语句。
DELETE:只要从 表中删除一行,触发器即被激活;例如,通过DELETE和REPLACE语句。但是, 表中的DROP TABLE和TRUNCATE TABLE语句不激活 此触发器,因为它们不使用DELETE。删除分区 也不会激活DELETE触发器。参见12.1.27节, “TRUNCATE TABLE语法”。
尽管无法放置trigger on multiple events,但您可以将两个触发器定义为仅调用另一个存储过程,从而减少需要提交的代码量。只需创建单独的触发器,不要做任何事情,但是,例如,
CALL update_counter();
并将您的所有实际工作都放入过程中。触发器将是一个简单的
CREATE TRIGGER t_apps_affected BEFORE INSERT ON table
FOR EACH ROW
BEGIN
CALL update_counter();
END;