使用触发器对学生表操作进行日志记录
Posted 方觉夏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用触发器对学生表操作进行日志记录相关的知识,希望对你有一定的参考价值。
项目介绍
触发器,就是一种特殊的存储过程,触发器和存储过程一样是一个能够完成特定功能,存储在数据库服务器上的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
以上是关于使用触发器对学生表操作进行日志记录的主要内容,如果未能解决你的问题,请参考以下文章