触发器
概念
定义了一系列的操作,可以对指定表进行插入、更新或者删除操作的同时自动执行这些操作。
触发器的优点
- 开发更快,因为触发器存储在数据库中,所以不必编写每个触发器在应用程序中执行的操作。
- 更容易维护,定义触发器之后,访问目标表会自动调用触发器。
- 业务全局实现,如果修改业务,只需要修改触发器即可,不需要修改业务代码。
触发器的语法
复制代码
1
2
3
4
5
6在非命令行模式下的语法结构: create trigger 触发器名 before|after 事件 on 表名 for each row begin 语句;语句; end;
复制代码
1
2
3
4
5
6
7
8
9
10
11在命令行模式下的语法结构 如果要命令行中执行需要修改命令结束符(mysql命令默认以“;”为语句结束符,如果我们不修改,那么键入一条触发器语句并以;结束时就会认为语句已经结束,然后就会因为语句不完整报错)[delimiter 自定义符号-- 临时修改语句结束符为指定符号]。 delimiter $$ -- 一般定义成$$ create trigger 触发器名 before|after 事件 on 表名 for each row begin 语句;语句; end $$
- 触发器名建议为trigger_xxx,这样便于区分,触发器名不能重复。
- before|after 代表触发器语句执行时间 (如果是before,就是在insert delete update操作之前执行触发器语句;after就是之后。)
- 事件就是insert delete update操作中的一个。
- for each row 是代表任何记录执行对应操作都会触发器
- 触发器语句就是触发器触发时要执行的语句
查看触发器
复制代码
1
2
3
4show triggersG; 在数据库information_schema中通过查看触发器表,来查看触发器 select * from triggersG;
查看触发器创建语句
复制代码
1
2show create trigger 触发器名G;
删除触发器
复制代码
1
2drop trigger 触发器名;
触发器的新旧记录引用
对于某些情况有时候可能需要引用一下之前的数据
new是新插入的数据,old是原来的数据
使用odlnew.字段名来引用数据,引用的是触发触发器的语句的数据
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21学生表: create table student(id int primary key auto_increment,age int not null,name varchar(32) not null); 学生姓名表: create table stu_info(name varchar(32)); 书写触发器 mysql> delimiter $$ mysql> create trigger add_trigger before insert on student for each row -> begin -> insert into stu_info values(new.name); -> insert into student(age,name) values(23,'leilei'); -> end -> $$ Query OK, 0 rows affected (0.01 sec) mysql> select * from stu_info; +--------+ | name | +--------+ | leilei | +--------+
最后
以上就是自信大船最近收集整理的关于Mysql系列基础篇-触发器的全部内容,更多相关Mysql系列基础篇-触发器内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复