触发器是一个特殊的存储过程,执行存储过程需要使用CALL语句来调用,但是触发器的执行不需要用CALL语句调用,也不需要手工启动,只要的当一个预定义的事件发生时,就会被MySQL自动调用。比如当对fruits表进行INSERT,DELETE或UPDATE操作时就会激活它。触发器可以查询数据表,而且可以包含复杂的SQL语句,主要用于复杂的业务规则或要求。
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个触发器。
查看触发器是指查看数据库中存在的触发器的定义、状态和语法信息等。本节介绍两种查看触发器的方法,分别为show triggers语句查看和在triggers表中查看触发器信息。
语句如下:
SHOW TRIGGERS;直接使用该条语句查看的信息可能有些混乱,可以在该条语句之后加上”/G”显示信息会比较有条理;
在MySQL中,所有的触发器的定义都存在于INFORMATION_SCHEMA数据库的triggers表中,可以通过查询命令SELECT来查看,具体语法如下:
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE condition;使用DROP TRIGGERS语句可以删除触发器,基本语法如下:
DROP TRIGGERS [schema_name.]trigger_name其中,schema_name是数据库的名称,是可选的。如果省略了schema,将从当前数据库中舍弃触发程序。trigger_name是要删除的触发器的名称。
新闻热点
疑难解答