目录

4.9 触发器

触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATE和DELETE语句。如果定义了触发程序,当数据库执行这些语句的时候就会激发触发器执行相应的操作,触发程序是与表有关的命名数据库库对象,当表上出现特定事件时,将激活该对象,可以实现更负责,更精细的管理控制。

4.9.1创建触发器

可以使用CREATE TRIGGER 语句创建触发器,语法格式如下:

CREATE <触发器名> < BEFORE | AFTER >
<INSERT | UPDATE | DELETE >
ON <表名> FOR EACH Row<触发器主体>

语法说明如下:

1)创建触发器的三要素为

1.监视地点:表

2.监视的事件:insert\update\delete

3.触发的时间:after、before

2)FOR EACH ROW一般是指行级触发,对于受触发事件影响的每一行都要激活触发器的动作

3)每个表的每个事件每次只允许有一个触发器,单一触发器不能与多个事件或多个表关联

4.9.2 查看触发器

查看触发器是指查看数据库中已存在的触发器的定义、状态和语法信息等。可以通过命令来查看已经创建的触发器,触发器的数据字典如图4-8所示。

通过SHOW TRIGGERS查看触发器的语句如下:

①通过SHOW TRIGGERS查看触发器

mysql> show triggers\G

②在triggers表中查看触发器

MySQL中所有触发器的定义都存在INFORMATION_SCHEMA数据库TRIGGERS数据字典中,如图4-8。

mysql> select * from information_schema.`TRIGGERS`;

4.9.3 修改及删除触发器

修改触发器可以通过删除原触发器,再以相同的名称创建新的触发器,可以使用DROP语句将触发器从数据库中删除,语法格式如下:

DROP TRIGGER [ IF EXISTS ] [数据库名] <触发器名>

注意:删除一个表的同时,也会自动删除该表上的触发器。另外,触发器不能更新或覆盖,为了修改一个触发器,必须先删除它,再重新创建。