概述
项目介绍
触发器,就是一种特殊的存储过程,触发器和存储过程一样是一个能够完成特定功能,存储在数据库服务器上的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
最后
以上就是飘逸紫菜为你收集整理的使用触发器对学生表操作进行日志记录的全部内容,希望文章能够帮你解决使用触发器对学生表操作进行日志记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复