MySQL系列教程二---触发器

3/7/2017来源:SQL技巧人气:3062

1. 触发器简介

触发器是一个特殊的存储过程,执行存储过程需要使用CALL语句来调用,但是触发器的执行不需要用CALL语句调用,也不需要手工启动,只要的当一个预定义的事件发生时,就会被MySQL自动调用。比如当对fruits表进行INSERT,DELETE或UPDATE操作时就会激活它。触发器可以查询数据表,而且可以包含复杂的SQL语句,主要用于复杂的业务规则或要求。

1.1创建只包含一个执行语句的触发器

CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR RACH ROW trigger_stmt

trigger_name:触发器名称,用户自行指定; trigger_time:触发时机,取值为 BEFORE 或 AFTER; trigger_event:触发事件,取值为 INSERT、UPDATE 或 DELETE; tbl_name:建立触发器的表名,即在哪张表上建立触发器; trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。

由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。

另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。

2.查看触发器

查看触发器是指查看数据库中存在的触发器的定义、状态和语法信息等。本节介绍两种查看触发器的方法,分别为show triggers语句查看和在triggers表中查看触发器信息。

2.1用show triggers语句查看

语句如下:

SHOW TRIGGERS;

直接使用该条语句查看的信息可能有些混乱,可以在该条语句之后加上”\G”显示信息会比较有条理;

2.2在triggers表中查看触发器信息

在MySQL中,所有的触发器的定义都存在于INFORMATION_SCHEMA数据库的triggers表中,可以通过查询命令SELECT来查看,具体语法如下:

SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE condition;

3.删除触发器

使用DROP TRIGGERS语句可以删除触发器,基本语法如下:

DROP TRIGGERS [schema_name.]trigger_name

其中,schema_name是数据库的名称,是可选的。如果省略了schema,将从当前数据库中舍弃触发程序。trigger_name是要删除的触发器的名称。