使用触发器对学生表操作进行日志记录

项目介绍

触发器,就是一种特殊的存储过程,触发器和存储过程一样是一个能够完成特定功能,存储在数据库服务器上的SQL片段,但是触发器无需调用,当对数据表中的数据执行DML操作时自动触发这个SQL片段的执行,无需手动调用。
学生信息表(stu):记录学生了的学号,姓名,性别,年龄

在这里插入图片描述
日志信息表(stu_log):记录对学生信息的操作(记录在xx时间对xx学生进行了xx操作)
在这里插入图片描述
当向stu表中进行增加删除修改学生信息时,同时要在stu_log表中添加一条操作日志

1、NEW与OLD关键字介绍

触发器用于监听对数据表中数据的insert,delete,update操作,在触发器中通常处理一些DML的关联操作
我们可以使用’new’和’old’关键字在触发器中获取触发这个触发器的DML操作的数据
new:用于获取insert操作添加的数据,update修改后的数据
old:在触发器中用于获取delete操作删除前的数据,update修改前的数据
接下来我们在创建触发器的时候,就可以充分使用这两个关键字对学生表信息进行关联获取。

2、创建触发器

我们需要创建三个触发器,分别执行用户对学生表(stu)进行增加,修改,删除操作时进行自动记录。

2.1增加学生信息的触发器

CREATE TRIGGER stu_tri_insert
AFTER INSERT ON stu 
FOR EACH ROW 
INSERT INTO stu_log(TIME,log_text) VALUE(NOW(),CONCAT('添加',new.stu_name,'学生信息'))

2.2修改学生信息的触发器

CREATE TRIGGER stu_tri_update
AFTER UPDATE ON stu 
FOR EACH ROW 
INSERT INTO stu_log(TIME,log_text) VALUE(NOW(),CONCAT('[','进行了修改操作',']','修改前为:',old.stu_name,' ','修改后为:',new.stu_name))

2.3删除学生信息的触发器

CREATE TRIGGER stu_tri_delete
AFTER DELETE ON stu
FOR EACH ROW 
INSERT INTO stu_log(TIME,log_text) VALUE(NOW(),CONCAT('删除的学生信息为',old.stu_name))

2.4查看触发器

SHOW TRIGGERS

stu_tri_insert,stu_tri_update,stu_tri_delete三个触发器分别对应着用户对学生表(stu)执行增删改操作时,会添加进日志信息表(stu_log)的信息。
在这里插入图片描述

3、最终实现效果

3.1当对学生表(stu)执行插入操作时

在这里插入图片描述
触发器的操作被自动执行,日志信息表(stu_log)新增了学生表(stu)所执行的添加操作记录
在这里插入图片描述

3.2当对学生表(stu)执行修改操作时

在这里插入图片描述
触发器的操作被自动执行,日志信息表(stu_log)新增了学生表(stu)所执行的修改操作记录

在这里插入图片描述

3.3当对学生表(stu)执行删除操作时

在这里插入图片描述
触发器的操作被自动执行,日志信息表(stu_log)新增了学生表(stu)所执行的删除操作记录
在这里插入图片描述

4、文中出现的增删改SQL语句

INSERT INTO stu(stu_num,stu_name,stu_gender,stu_age) VALUES(1005,'夏北','女',25);
UPDATE stu SET stu_name='夏南' WHERE stu_num = 1005
DELETE FROM stu WHERE stu_num = 1005

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>