MySQL触发器(十一)
MySQL触发器
- MySQL的触发器和存储过程一样,都是嵌入到MySQL的一段程序。触发器由事件来触发某个操作,这些事件包括INSERT、UPDATE和DELETE语句。
创建触发器
- 触发器(trigger)是一个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL语句调用,也不需要手动启动,只要当一个预定义的事件发生的时候,就会被MySQL自动调用。
创建只有一个执行语句的触发器
-
创建一个触发器的语法如下:
CREATE TRIGGER trigger_name trigger_time trigger_event ON tb1_name FOR EACH ROW trigger_stmt;
其中,trigger_name标识触发器的名称,用户自行指定;
trigger_time标识触发时机,可以指定为BEFORE或AFTER;
trigger_event标识触发事件,包括INSERT、UPDATE和DELETE;
tb1_name标识建立触发器的表名,既在哪个表上建立触发器;
trigger_stmt是触发器执行语句。
创建有多个执行语句的触发器
-
创建多个执行语句的触发器的语法如下:
CREATE TRIGGER trigger_name trigger_time trigger_event ON tb1_name FOR EACH ROW BEGIN 语句执行列表 END;
触发器程序可以使用BEGIN和END作为开始和结束,中间包含多个语句。
查看触发器
- 可以通过两种方法来查看已经创建的触发器,分别是SHOW TRIGGERS和在triggers表中查看触发器信息。
SHOW TRIGGERS语句查看触发器信息
-
通过
SHOW TRIGGERS
查看触发器的语句如下:SHOW TRIGGERS;
在triggers表中查看触发器信息
-
在MySQL中所有触发器的定义都存在INFORMATION_SCHEMA数据库的TRIGGERS表格中,可以通过查询命令SELECT来查看,具体语法如下:
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE condition;
TRIGGER_SCHEMA表示触发器所在的数据库;EVENT_OBJECT_TABLE表示在哪个数据表上触发;ACTION_ORIENTATION是ROW,表示在每条记录上都触发。
使用触发器
- 触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。
删除触发器
-
使用DROP TRIGGER语句可以删除MySQL中已经定义的触发器,删除触发器语句基本语法格式如下:
DROP TRIGGER [schema_name.]trigger_name;
注意事项
- 在使用触发器的时候,对于相同的表,相同事件只能创建一个触发器。
- 如果需求发生变化,而触发器没有进行相应的改变或者删除,则触发器仍然会执行旧的语句,从而影响新的数据的完整性。因此,要将不再使用的触发器及时删除。