mysql触发器实际例子 mysql触发器的用途

圆圆 0 2024-12-30 18:01:41

MySQL触发实战案例:数据变更日志自动记录

触发 关于MySQL 我的 SQL //65432-1/

一、背景介绍在许多实 国际适用于审计、数据恢复和业务分 分析都至关重要。使用触发器可以在不修改现有业务逻辑的前提下 < /p>

二、案例需求假设我们有一个叫studen ts 的学生表,需要记录每次该表的插入、更新和删除操作。 日志表stulogs用于存储这些操作的相关信息。

三、案例实现

创建日志表CREATE TABLE Stulogs(id INT PRIMARY KEY AUTO_INCRMENT,时间TIMESTAMP,logtext VARCHAR(200),操作类型ENUM('插入','更新','删除'),操作表VARCHAR(100),操作ID INT);

创建触发器我们需要创建三个触发器,分别对应INSERT 、UPDATE和DELETE操作。

插入操作发生DELIMITER //CREATE TRIGGER trig_students_insertAFTER INSERT ON StudentsFOR EACH ROWBEGININSERT INTO Stulogs (time, logtext, operation_type, operation_table, operation_id)VALUES (NOW(), CONCAT('插入学生记录,姓名:', NEW.name), 'INSERT', 'students', NEW.id);END;//DELIMITER ;

更新操作DELIMITER //CREATE TRIGGER trig_students_updateAFTER UPDATE ON StudentsFOR EACH ROWBEGININSERT INTO Stulogs (time, logtext, operation_type, operation_table, operation_id)值(现在(), CONCAT('更新学生记录,姓名:', NEW.name), 'UPDATE', 'students', NEW.id);END;//DELIMITER ;

删除操作DELIMITER //CREATE触发 trig_students_deleteAFTER DELETE ON StudentsFOR EACH ROWBEGININSERT INTO Stulogs (time, logtext, operation_type, operation_table, operation_id)VALUES (NOW(), CONCAT('删除学生记录,姓名:', OLD.name), 'DELETE', 'students', OLD. id);END;//分隔符 ;

四、测试现在我们可以在学生表上执行 中的记录是否正确生成。

插入操作INSERT INTO Students (name,age) VALUES ('张三', 20);

更新操作UPDATE Students SET Age = 21 WHERE name = '张三';

删除操作DELETE FROM Students WHERE name = '张三'; 使用MySQL自动记录数据助我 增强数据的安全性和可追溯性。 灵活运用实现各种功能。 当前文章不喜欢?试试AI生成哦! .markdown-body pre { padding: 0}.markdown-body code,.markdown-body pre { font-family: Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace; border-radius: 8px;}.markdown-body pre>code{text-align: left;}.markdown-body pre code, .markdown-body p code{ display: block; 溢出-x:自动; 填充:1em}.markdown-body代码{填充:3px 5px;}.markdown-body pre,.markdown-body p代码{背景:#3a3a3a;颜色:#fff;}.markdown-body ul p,.markdown- body ol p{display: block!important;}.markdown-body ol li{ list-style: auto; text-align: left;}.markdown-body ol, .markdown-body ul { padding-left: 2em; 显示:块;}.cursor { 显示:内联块; 宽度:1 像素; 背景颜色:黑色; 左边距:2px; 动画:闪烁 1 秒步进开始无限;}@keyframes 闪烁 { 50% { 不透明度:0; }}} SQL语句生成器AI生成参考!

上一篇:mysql分布式搭建 mysql分布式部署方案实战
下一篇:返回列表
相关文章
返回顶部小火箭