1.为什么使用触发器:
用来实现一些表事件触发的某个操作
触发器需要声明、执行
由事件来触发、激活从而实现执行
只有触发DELETE语句、INSERT语句或者UPDATE语句的时候才会自动执行所设置的操作
使用触发器能够加强数据库表中的数据完整性约束和业务规则
2.创建触发器:
2.1创建有一条执行语句的触发器:
CREATE TRIGGER trigger_name
BEFORE|AFTER trigger_EVENT
ON TABLE_NAME FOR EACH ROW trigger_STMT;
trigger_name(触发器名字)
BEFORE|AFTER指定了触发器执行时间,前者是指在触发器事件之前执行触发器,后者是在触发器事件之后执行触发器
trigger_EVENT(触发事件)
TABLE_NAME触发事件操作表的名字
FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器
trigger_STMT表示激活触发器后执行的语句
例如:
CREATE TRIGGER tri_diarytime
BEFORE INSERT
ON t_dept FOR EACH ROW
INSERT INTO t_diary VALUES(NULL,'t_dept',now());
2.2创建包含多条执行语句的触发器:
CREATE TRIGGER trigger_name
BEFORE|AFTER trigger_EVENT
ON TABLE_NAME FOR EACH ROW
BEGIN
trigger_STMT
END
BEGIN和END之间为所要执行的多个执行语句的内容,执行语句之间用分号隔开
因为“;”作为执行语句的结束符所以需要使用关键字DELIMITER语句,例如“DELIMITER$$”
例如:
DELIMITER $$
CREATE TRIGGER tri_diarytime2
AFTER 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;
3.查看触发器:
3.1使用SHOW TRIGGERS语句查看触发器:
SHOW TRIGGERS \G
3.2通过查看系统表triggers实现查看触发器:
USE information_schema;
SELECT * FROM triggers \G
显示触发器的详细信息:
SELECT * FROM TRIGGERS WHERE TRIGGER_NAME='tri_diarytime2' \G
4.删除触发器:
DROP TRIGGER trigger_name;