概述
触发器
概念
定义了一系列的操作,可以对指定表进行插入、更新或者删除操作的同时自动执行这些操作。
触发器的优点
- 开发更快,因为触发器存储在数据库中,所以不必编写每个触发器在应用程序中执行的操作。
- 更容易维护,定义触发器之后,访问目标表会自动调用触发器。
- 业务全局实现,如果修改业务,只需要修改触发器即可,不需要修改业务代码。
触发器的语法
在非命令行模式下的语法结构:
create trigger 触发器名 before|after 事件 on 表名 for each row
begin
语句;语句;
end;
在命令行模式下的语法结构
如果要命令行中执行需要修改命令结束符(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 是代表任何记录执行对应操作都会触发器
- 触发器语句就是触发器触发时要执行的语句
查看触发器
show triggersG;
在数据库information_schema中通过查看触发器表,来查看触发器
select * from triggersG;
查看触发器创建语句
show create trigger 触发器名G;
删除触发器
drop trigger 触发器名;
触发器的新旧记录引用
对于某些情况有时候可能需要引用一下之前的数据
new是新插入的数据,old是原来的数据
使用odlnew.字段名来引用数据,引用的是触发触发器的语句的数据
学生表:
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系列基础篇-触发器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复