Mysql数据库 12.SQL语言 触发器

编程入门 行业动态 更新时间:2024-10-22 11:28:48

Mysql数据库 12.SQL语言 <a href=https://www.elefans.com/category/jswz/34/1768873.html style=触发器"/>

Mysql数据库 12.SQL语言 触发器

一、触发器(操作日志表)

1.介绍

不需要主动调用的一种储存过程,是一个能够完成特定过程,存储在数据库服务器上的SQL片段。

对当前表中数据增删改查的一种记录<日志表>,根据触发器自动执行,记录当前操作

2.触发器的使用

2.1 手动进行操作记录

1.创建日志表
代码实现
#创建日志表
create table stulogs(id int primary key auto_increment,#主键自增 autu_incrementtime timestamp,#操作类型的时间log_text varchar(200)#记录当前所做的具体操作
);
运行结果

2.向学生表中添加一条数据
代码实现
#向学生表中添加一条数据
insert into students (stu_num,name,stu_gender,stu_age,cid)
values('20220112','小丽','女',20,2
);
运行结果

3.手动进行日志的记录 新增记录
代码实现
insert into stulogs(time,log_text) values(now(),'添加20222012学生信息');
运行结果

4.对表修改结果
students表

日志表stulogs

2.2 使用触发器自动进行操作记录

1.创建触发器 trigger
语法:关键字:trigger

create trigger 触发器的名字

<before|after>                        #定义触发器的触发时机

<新增insert|删除delete|修改update>                #定义数据操作语言DML类型

on <表名>                        #指定具体是哪张表

for each row                        #声明为行级触发器(只要操作一条记录就能触发触发器执行一次)

具体的触发器操作

案例

通过触发器的方式来进行日志记录

代码实现
#通过触发器的方式来进行日志记录
create trigger tri_test1
after insert on students
for each row 			#行级触发器
insert into stulogs(time,log_text)values(now(),concat('添加',new.stu_num,'学生信息'));
运行结果

2.查看触发器

show triggers;

代码实现
#查看触发器
show triggers;
运行结果

3.测试触发器

代码实现
#触发器自动执行
#新增数据操作
insert into students (stu_num,name,stu_gender,stu_age,cid)values('20220113','小美','女',21,1);
运行结果

对表修改结果

触发器日志表自动存储结果

4.删除触发器

语法

drop trigger 触发器名;

代码实现
drop trigger stulogs;
运行结果

二、NEW与OLD

介绍

new与old关键字用来在触发器中获取出发这个触发器的数据库操纵语言DML的数据

new:在触发器中获取insert操作添加的数据,update操作修改后的记录

old:在触发器中用于获取delete操作删除前的数据,update操作修改前的数据

同时新增多条数据

代码实现
#同时新增多条数据
insert into students (stu_num,name,stu_gender,stu_age,cid)values('20220114','小小','男',18,1),('20220115','郭靖','男',20,2);

运行结果

对表修改结果

students表

log_text日志表

修改触发器

新增一个触发器,记录修改操作
create trigger tir_test3
after update on students
for each row 
insert into stulogs(time,log_text) values(now(),concat('修改学生信息为',new.stu_num,new.name));
 修改数据

update 表名 set 列名='修改后的数据' where 条件;

代码实现
#修改数据
update students set name='大黄' where stu_num=20220114;
运行结果

表数据修改结果 

表数据修改

查看触发器
代码实现
#查看触发器
show triggers;
运行结果,显示触发器记录

案例 

修改数据并触发器记录

代码实现
#删除数据
delete from students where name='大黄';#修改数据
update students set name='蓝' where stu_num=20220115;#添加删除触发器
create trigger tir_test4 
after update on students
for each row 
insert into stulogs(time,log_text) values(now(),concat('将学员姓名从【',old.name,'】修改为【',new.name,'】'));
运行结果

 

表数据修改结果

三、触发器使用总结

更多推荐

Mysql数据库 12.SQL语言 触发器

本文发布于:2023-11-15 17:58:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1603792.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:触发器   语言   数据库   Mysql   SQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!