什么是MySQL触发器

时间:2021-09-12 10:59:04

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 条件的 等号 两边必须有相同的内容,这点相信大家都懂得。