MySQL学习笔记6
触发器
触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,就会激活触发器执行相应的操作。
1:触发器的含义和作用
2:如何创建触发器
3:如何查看触发器
4:如何删除触发器
1.1:创建只有一个执行语句的触发器
语法基本形式为:
CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件
ON 表名 FOR EACH ROW 执行语句
CREATE TRIGGER dept_trig1 BEFORE INSERT
ON department FOR EACH ROW
INSERT INTO trigger_time VALUES(NOW());
该语句的意思是指:在向department表中插入数据前向trigger_time表中插入当前时间。
1.2:创建有多个执行语句的触发器
语法基本形式为:
CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件
ON 表名 FOR EACH ROW
BEGIN
执行语句列表
END
BEGIN和END之间的“执行语句列表”参数表示需要执行的多个执行语句的内容,不同的执行语句之间用分号。
DELIMITER ##; 程序结束符号变为##;。
CREATE TRIGGER dept_trig2 AFTER INSERT
ON department FOR EACH ROW
BEGIN
INSERT INTO trigger_time VALUES('21:23:05');
INSERT INTO trigger_time VALUES('21:25:13');
END
##;
2:查看触发器
查看触发器的方法包括SHOW TRIGGERS语句和查询information_schema数据库下的triggers表等。
SHOW TRIGGERS\G
显示当前所有触发器:
***************** 1. row *****************
Trigger: dept_trig1
Event: INSERT
Table: department
Statement: INSERT INTO trigger_time VALUES(NOW())
Timing: BEFORE
Created: 2016-03-12 20:12:41.75
sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci
***************** 2. row *****************
Trigger: dept_trig2
Event: INSERT
Table: department
Statement: BEGIN
INSERT INTO trigger_time VALUES(‘21:23:05’);
INSERT INTO trigger_time VALUES(‘21:25:13’);
END
Timing: AFTER
Created: 2016-03-12 20:33:16.32
sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci
MySQL中,所有触发器的定义都存在information_schema数据库的triggers表中。
SELECT * FROM information_schema.triggers\G
SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME='dept_trig1'\G
第一个语句显示所有触发器
第二个语句显示指定触发器名的触发器
3:删除触发器
删除触发器使用的语法形式如下:
DROP TRIGGER 触发器名;