1. 为什么要使用触发器?
触发器与函数有些类似,都需要声明,执行。但是触发器的执行不是由程序调用,也不是由手工启动,而是由事件来触发,激活,从而实现执行。
当触发DELETE,INSERT,UPDATE语句的时候会触发激活触发器,其他的SQL语句则不会激活触发器。
当处理一些业务逻辑,表的数据发生更改时,能够自动进行一些处理,这时就可以使用触发器处理数据库对象。
触发器的操作包括创建触发器,查看触发器以及删除触发器。
2. 创建触发器
2.1 创建有一条执行语句的触发器
CREATE TRIGGER trigger_name BEFORE | AFTER trigger_event ON table_name FOR EACH ROW trigger_stmt;
示例如下:
CREATE TRIGGER tri_diary BEFORE INSERT ON t_dept FOR EACH ROW INSERT INTO t_diary VALUES(NULL,'t_dept',NOW());
当向部门表t_dept插入任意一条记录时,就会在插入操作之前向表t_diary中插入当前时间记录。
2.2 创建包含多条执行语句的触发器
CREATE TRIGGER trigger_name BEFORE | AFTER trigger_event ON table_name FOR EACH ROW BEGIN trigger_stmt END;
示例如下:
DELIMITER $$
CREATE TRIGGER tri_diary BEFORE INSERT ON t_dept FOR EACH ROW BEGIN
INSERT INTO t_diary VALUES(NULL,'t_dept',NOW());
INSERT INTO t_diary VALUES(NULL,'t_dept',NOW());
END
$$
DELIMITER ;
上面示例中,首先通过"DELIMITER $$"语句设置结束符为"$$",然后再关键字BEGIN和END之间编写执行语句列表,最后通过"DELIMITER ;"语句将结束符号还原成默认结束符";"。需要注意的是DELIMITER和&&以及DELIMITER和;之间要留有空格。
3. 查看触发器
3.1 通过SHOW TRIGGERS语句查看触发器
SHOW TRIGGERS会显示所有触发器的一个列表。
3.2 通过查看系统表triggers实现查看触发器。
4. 删除触发器
DROP TRIGGER trigger_name;