MySQL的触发器和存储过程一样,都是嵌入到MySQL的一段程序。利用MySQL触发器可以对表进行增、删、改操作同时响应另一张表做出相同的操作。下面简单介绍一下MySQL触发器的基本语法。
如何创建一个触发器:
修改delimiter为//
mysql> \d //
创建一个名字为tg1的触发器,当向t1表中插入数据时,就向t2表中插入一条数据
mysql> create trigger tg1 before insert on t1 for each row
>begin insert into t2(id) values(new.id);
>end//
准备两个空表t1和t2
mysql> select * from t1;
mysql> select * from t2;
向t1表中插入多条数据:
mysql> insert into t1 values(1),(2),(3),(4);
此时在 t1 表中插入数据的时候也会将数据插入到 t2 表中,这就实现了关联插入的效果,也可以认为是两表同步。需要解释的地方是 >begin insert into t2(id) values(new.id);这句里面的 new.id ,所有插入的数据都为新数据,如果执行的是修改的话,数据是之前存在的,就要用 old ,也就是说,之前没有的用 new ,之前已经存在的就用 old,下面会讲解到删除、修改操作,相信很快就会理解。
如何制作删除表t1后t2表中的记录也会跟着删除呢?
mysql>\d //
mysql> create trigger tg2 before delete on t1 for each row
>begin delete from t2 where id=old.id;
>end//
mysql>\d ;这一步是将原来的被修改的结束符还原成分号 ;
此时当对表 t1 中数据删除的时候就会同时删除 t2 中对应的数据
如何制作更改表t1后t2表中的记录跟着个性呢?
mysql>\d //
mysql> create trigger tg3 before update on t1 for each row
>begin update t2 set id=new.id where id=old.id;
>end//
mysql>\d ;
此时当对表 t1 中数据修改的时候就会同时修改 t2 中对应的数据
需要注意的地方: where 条件的 等号 两边必须有相同的内容,这点相信大家都懂得。