我是靠谱客的博主 自信大船,最近开发中收集的这篇文章主要介绍Mysql系列基础篇-触发器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

触发器

概念

定义了一系列的操作,可以对指定表进行插入、更新或者删除操作的同时自动执行这些操作。

触发器的优点

  • 开发更快,因为触发器存储在数据库中,所以不必编写每个触发器在应用程序中执行的操作。
  • 更容易维护,定义触发器之后,访问目标表会自动调用触发器。
  • 业务全局实现,如果修改业务,只需要修改触发器即可,不需要修改业务代码。

触发器的语法

在非命令行模式下的语法结构:
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系列基础篇-触发器所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部