欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql那些事儿之(十一)触发器 二

程序员文章站 2022-06-04 08:45:30
...

 比较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的顺序。

相关标签: mysql 触发器