以下两个例子来自:
http://www.cnblogs.com/nicholas_f/archive/2009/09/22/1572050.html实测有效,但是原帖的分隔符不正确,因此稍作修改。其中old表示tab2(被动触发),new表示tab1(主动触发,外部应用程序在此表里执行insert语句)例子1:创建两个表,目的是在一个表里添加一条记录,另一个表也添加一条记录:DROP TABLE IF EXISTS tab1;CREATE TABLE tab1( tab1_id varchar(11));
DROP TABLE IF EXISTS tab2;
CREATE TABLE tab2( tab2_id varchar(11));创建触发器:t_afterinsert_on_tab1
作用:增加tab1表记录后自动将记录增加到tab2表中delimiter || DROP TRIGGER IF EXISTS t_afterinsert_on_tab1 ||CREATE TRIGGER t_afterinsert_on_tab1 AFTER INSERT ON tab1FOR EACH ROWBEGIN insert into tab2(tab2_id) values(new.tab1_id);END||delimiter ;测试:
INSERT INTO tab1(tab1_id) values('0001');查看结果:
SELECT * FROM tab1;SELECT * FROM tab2;例子2:创建两个表,目的是在一个表里删除一条记录,另一个表也删除一条记录:
delimiter || //mysql 默认结束符号是分号,当你在写触发器或者存储过程时有分号出现,会中止转而执行 DROP TRIGGER IF EXISTS t_afterdelete_on_tab1||CREATE TRIGGER t_afterdelete_on_tab1AFTER DELETE ON tab1FOR EACH ROWBEGINdelete from tab2 where tab2_id=old.tab1_id;END||
测试:
DELETE FROM tab1 WHERE tab1_id='0001';看看结果
SELECT * FROM tab1;SELECT * FROM tab2;