触发器(TRIGGER)是用户定义在关系表上的一类由事件驱动的特殊过程,在满足一定条件或达到一定阈值时会自动触发。可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力。
Trigger 又叫做 事件-条件-动作(event- condition-action)规则。当特定的系统事件(如对一个表的增、删、改操作,事务的结束等)发生时,对规则的条件进行检查,如果条件成立则执行规则中的动作,否则不执行该动作。规则中的动作体可以很复杂,可以涉及其他表和其他数据库对象,通常是一段 SQL 存储过程
触发器是 MySQL 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是 CALL
手动启动,而是由事件来触发,比如当对一个表进行操作(INSERT
,DELETE
, UPDATE
)时就会激活它执行。
创建触发器
四要素
触发器创建的四个要素:
-
监视地点
TABLE
-
监视事件
INSERT
/UPDATE
/DELETE
-
触发时间
AFTER
/BEFORE
-
触发事件
INSERT
/UPDATE
/DELETE
只有表的创建者才可以在表上创建触发器,并且一个表上只能创建有限数量的触发器
语法
触发器的语法会根据具体的数据库管理系统而有所不同,下面是一般常用的触发器语法:
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {
INSERT | UPDATE | DELETE} ON table_name
[REFERNCEING NEW|OLD ROW|TABLE AS <var_name>]
FOR EACH [