日期:2014-05-16 浏览次数:20829 次
?比较after insert、before insert、after update、before update触发时间与事件 的触发情况。
?
--创建表 create table film_text( id smallint auto_increment, name varchar(40), txt text, primary key(id) );
??
对于film表在 触发器 一 里有提过,代码就不写了。
针对表film 创建before insert 触发器:
?
--创建before insert 触发器 create trigger trigger_film_bef --触发器名称为trigger_film_bef before insert --触发器的时间和事件 on film for each row --行级触发器 begin insert into film_text values(null,'sunny','before insert'); end;
针对表film 创建 after insert 触发器:
?
--创建after insert 触发器 create trigger trigger_film_aft --触发器名称为trigger_film_aft after insert --触发器的时间和事件 on film for each row --行级触发器 begin insert into film_text values(null,'sunny','after insert'); end;
?
针对表film 创建?after update触发器
?
--创建after update 触发器 create trigger upd_film_aft --触发器名称为upd_film_aft after update --触发器的时间和事件 on film for each row --行级触发器 begin insert into film_text values(null,'sunny','after update'); end;
?
针对表film 创建?before update触发器
?
--创建before update触发器 create trigger upd_film_bef before update on film for each row begin insert into film_text values(null,'sunny','before update'); end;
?
到现在四个触发器创建完了。
?
可以做下实验:
插入一条数据
?
insert into film values(null,'sunny','i like you',null);
查询表film_text:
?
select * from film_text;
?结果如下:
?
mysql> select * from film_text; +----+---------+-----------------+ | id | name | txt | +----+---------+-----------------+ | 9 | huigui0 | thank you...... | | 10 | sunny | before insert | | 11 | sunny | after insert | +----+---------+-----------------+ 3 rows in set
?说明了 before与after的顺序。
?
更新一条数据:
update film set name='sunny' where id=1;
?
结果如下:
| 12 | sunny | before update | | 13 | sunny | after update | +----+---------+-----------------+ 5 rows in set
?说明了 before与after的顺序。