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 ] [数据库名] <触发器名>
注意:删除一个表的同时,也会自动删除该表上的触发器。另外,触发器不能更新或覆盖,为了修改一个触发器,必须先删除它,再重新创建。