一、什么是触发器
- 触发器(trigger)用于监视某种情况并触发某种操作,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,而是由事件来触发。例如,当对某张表进行
insert
、delete
、update
操作时就会触发执行它。
二、语法
1. 创建触发器
-
语法
#创建触发器语法 CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW trigger_stmt
-
trigger_name
:触发器名称 -
trigger_time
:触发时间,取值有before、after -
trigger_event
:触发事件,取值有insert、update、delete -
table_name
:触发器监控的表名 -
trigger_stmt
:触发执行的语句,可以使用OLD、NEW来引用变化前后的记录内容NEW.columnName
:获取INSERT触发事件中新插入的数据OLD.columnName
:获取UPDATE和DELETE触发事件中被更新、删除的数据
-
-
示例:某个字段的值自动为其他两个字段的和
//更新表后,重新求和 create trigger xxx after update on table for each row update table set c=a+b //插入新表后,重新求和 create trigger xxx after insert on table for each row update table set c=a+b
2. 查看触发器
-
所有触发器信息都存储在
information_schema
数据库下的triggers表中,可以使用SELECT
语句查询,如果触发器信息过多,最好通过TRIGGER_NAME
字段指定查询。 -
语法
//查看所有触发器 SHOW TRIGGERS\G; //查看指定触发器 select * from information_schema.triggers where trigger_name='upd_check'\G;
3. 删除触发器
-
如果不需要某个触发器时一定要将这个触发器删除,以免造成意外操作,这很关键。
-
语法:
DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name