触发器
触发器:是用户定义在关系表上的一类由事件驱动的数据对象,也是一种保证数据完整性的方法.
使用create trigger语句创建触发器
格式:create trigger trigger_name trigger_time trigger_event
on tb_table for each row trigger_body
mysql-> create trigger mysql_test.cust_insert_trigger after insert
-> on mysql_test.cust for each row set @str='one customer added!';
mysql-> insert into mysql_test.cust
-> values(null,'万华','F','长沙市','芙蓉区');
mysql-> select @str;
mysql-> drop trigger if exists mysql_test.cust_insert_trigger
使用触发器 \\同一个类型的触发器只能有一个,每个表最多有2x3个触发器
三种触发器: insert触发器,delete触发器,update触发器
insert触发器:在insert触发器代码内,可引用一个名为new(不区分大小写)的虚拟表,来访问被插入的行.
在before insert触发器中,new中的值可以被更新.
mysql-> create trigger mysql_test.cust_insert_trigger after insert
-> on mysql_test.cust for each row set @str=new.cust_id;
delete触发器: 在delete触发器代码内,可引用一个名为old(不区分大小写)的虚拟表,来访问被删除的行.
old中的值全部是只读的,不能被更新.
update触发器: 在update触发器代码内,可引用一个名为old(不区分大小写)的虚拟表,来访问update语句执行前的值,
也可以引用一个名为new(不区分大小写)的虚拟表来访问更新后的值.
mysql-> create trigger mysql_test.cust_update_trigger before update
-> on mysql_test.cust for each row set new.cust_address=old.cust_contact;