我是靠谱客的博主 故意饼干,最近开发中收集的这篇文章主要介绍MySQL触发器触发器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

触发器

触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。

一、创建触发器

触发器只能创建在永久表(Permanent Table)上,不能对临时表(Temporary Table)创建触发器

1.1、创建触发器

# demo表
create table demo(
    id int auto_increment primary key,
    note varchar(20)
);

# demo触发器表
create table trigger_demo(
    id int auto_increment primary key ,
    note varchar(20)
);

# 插入之前触发器
create trigger insert_demo_before
    before insert
    on demo
    for each row
begin
    insert into trigger_demo(note) values ('before insert');
end;

# 插入之后触发器
create trigger insert_demo_after
    after insert
    on demo
    for each row
begin
    insert into trigger_demo(note) values ('after insert');
end;

# 更新之前触发器
create trigger update_demo_before
    before update
    on demo
    for each row
begin
    insert into trigger_demo(note) values ('before update');
end;

# 更新之后触发器
create trigger update_demo_after
    after update
    on demo
    for each row
begin
    insert into trigger_demo(note) values ('after update');
end;

1.2、测试触发器

# 插入数据测试
insert into demo value (1, 'a');

# 查看demo表
select * from demo;
+----+------+
| id | note |
+----+------+
|  1 | a    |
+----+------+

# 查看trigger_demo表
select * from trigger_demo;
+----+---------------+
| id | note          |
+----+---------------+
|  1 | before insert |
|  2 | after insert  |
+----+---------------+

# 更新数据测试
update demo set note = 'b' where id = 1;

# 查看demo表
select * from demo;
+----+------+
| id | note |
+----+------+
|  1 | b    |
+----+------+

# 查看trigger_demo表
select * from trigger_demo;
+----+---------------+
| id | note          |
+----+---------------+
|  1 | before insert |
|  2 | after insert  |
|  3 | before update |
|  4 | after update  |
+----+---------------+

二、查看触发器

2.1、查看所有触发器

show triggers;

2.2、查看指定触发器

# 查看所有触发器
desc information_schema.TRIGGERS;

# 按触发器名称过滤查看
select * from information_schema.TRIGGERS where trigger_name = 'insert_demo_before';

三、删除触发器

# 删除名为insert_demo_before的触发器
drop trigger insert_demo_before;

四、注意

  • 触发器不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL,但是允许存储程序通过参数将数据返回触发程序。也就是存储过程或者函数cefpOUT或者INOUT类型的参数将数据返回触发器是可以,但不能调用直接返回数据过程。

  • 不能在触发器中使用显示式隐匿方式开始或结束事务的语句

参考

  • 《深入浅出MySQL第2版》唐汉明、翟振兴、关宝军、王洪权、黄潇著

最后

以上就是故意饼干为你收集整理的MySQL触发器触发器的全部内容,希望文章能够帮你解决MySQL触发器触发器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部