一、什么是触发器
触发器(trigger)是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete, update)时就会激活它执行。
重点:由事件来触发,也就是说触发器是有执行sql语句被动执行的。
二、触发器的种类(触发器的事件)
触发器的事件即那些mysql操作事件可以触动触发器。
INSERT、DELETE、UPDATE这三类事件可以触动触发器,而这三类事件又包括事件之前和事件之后,所以具体的说应该有六种触发器:
BEFORE INSERT,BEFORE DELETE,BEFORE UPDATE AFTER INSERT,AFTER DELETE,AFTER UPDATE
三、触发器的创建
1、创建要素:
①监视地点(table)
②监视事件(insert/update/delete)
③触发时间(after/before)
④触发事件(insert/update/delete)
2、触发器使用实例
创建两张测试数据表(tab1,tab2):
//tab1 DROP TABLE IF EXISTS tab1; CREATE TABLE tab1( tab1_id varchar(11) ); //tab2 DROP TABLE IF EXISTS tab2; CREATE TABLE tab2( tab2_id varchar(11) );
①创建插入事件触发器
DELIMITER // CREATE TRIGGER t_afterinsert_on_tab1 AFTER INSERT ON tab1 FOR EACH ROW BEGIN insert into tab2(tab2_id) values(new.tab1_id); END // DELIMITER ;
往tab1中插入数据
INSERT INTO tab1(tab1_id) values("0001")
执行结果:
在截图中可以看到,只对tab1执行了insert事件,但在tab2中出现了新的插入数据,说明插入事件触发器被执行了。
②创建删除事件触发器
DELIMITER // CREATE TRIGGER t_afterdelete_on_tab2 AFTER DELETE ON tab1 FOR EACH ROW BEGIN delete from tab2 where tab2_id=old.tab1_id; END // DELIMITER ;
对tab1执行delete操作
DELETE FROM tab1 WHERE tab1_id="0001"
执行结果:
虽然只是对tab1执行了delete操作,但tab2中的数据同样被delete掉了,说明前面创建的删除事件触发器被执行了。
以上就是mysql触发器的简单实用实例。