当前位置: 首页 > news >正文

11MySQL触发器实战:用户操作日志审计系统

目录

mysql触发器

介绍

语法:

用户操作日志审计系统案例


mysql触发器

介绍

    触发器是与表有关的数据库对象,指在 insert/ update/ delete 之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。
    使用别名OLD 和NEW 来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发即for each row,不支持语句级触发。

语法:

创建触发器:

create trigger 触发器名

before/after    insert/update/delete

on 指定表 for each row -- 行级触发器

begin

       sql语句;

end;

  • 在 INSERT 触发器中:只有 NEW 有效,它包含了新插入的完整数据行。

查看触发器

show triggers;

删除触发器

drop trigger 触发器名;

用户操作日志审计系统案例

这段代码实现了一个完整的用户操作日志审计系统,能够自动记录users表中数据的新增(INSERT)、修改(UPDATE)和删除(DELETE)操作,形成完整的操作轨迹。

CREATE TABLE user_logs(`id` int(11) NOT NULL AUTO_INCREMENT,`operation` varchar(20) NOT NULL COMMENT '操作类型: insert/update/delete',`operate_time` datetime NOT NULL COMMENT '操作时间',`operate_id` int(11) NOT NULL COMMENT '操作的ID',`operate_parameters` varchar(500) DEFAULT NULL COMMENT '操作参数',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户操作日志表';create trigger users_insert_triggerafter insert on users for each row
begininsert into user_logs(id,operation,operate_time,operate_id,operate_parameters) values (null,'insert',now(),new.id,concat('插入的数据为:id:',new.id,',name:',new.name,',phone:',new.phone,',email:',new.email,',profession',new.profession));
end;create trigger users_update_triggerafter update on users for each row
begininsert into user_logs(id,operation,operate_time,operate_id,operate_parameters) values (null,'update',now(),new.id,concat('未更新的数据为:id:',old.id,',name:',old.name,',phone:',old.phone,',email:',old.email,',profession',old.profession,'|更新后的数据为:id:',new.id,',name:',new.name,',phone:',new.phone,',email:',new.email,',profession',new.profession));
end;create trigger users_delete_triggerafter delete on users for each row
begininsert into user_logs(id,operation,operate_time,operate_id,operate_parameters) values (null,'delete',now(),old.id,concat('删除前的数据为:id:',old.id,',name:',old.name,',phone:',old.phone,',email:',old.email,',profession',old.profession));
end;INSERT INTO `users` (`id`, `name`, `phone`, `email`, `profession`, `age`, `gender`, `status`, `createtime`
)
VALUES (25, '二皇子', '18809091212', 'erhuangzi@163.com', '软件工程', 23, '1', '1', NOW()
);show triggers;drop trigger users_insert_trigger;update users set age = 32 where id =17;delete from users where id = 25;

这是我的个人学习笔记,主要用于记录自己对知识点的理解和梳理。由于目前仍在学习探索阶段,内容中难免存在理解偏差或表述疏漏,恳请各位大佬不吝赐教,多提宝贵意见~ 若有不同看法,欢迎理性交流探讨,感谢包容与指正!

http://www.dtcms.com/a/395044.html

相关文章:

  • 【深度学习计算机视觉】06:目标检测数据集
  • visual studio 2019离线安装
  • 【Unity笔记】Unity 模型渲染优化:从 Batching 到 GI 设置的完整指南
  • 【AI领域】如何写好Prompt提示词:从新手到进阶的完整指南
  • Unity 性能优化 之 内存优化
  • PCB 通孔技术全解析:结构参数、制造工艺与质量控制指南
  • 1.13-Web身份鉴权技术
  • 【完整源码+数据集+部署教程】水母图像分割系统: yolov8-seg-rtdetr
  • 《从零到精通:PyTorch (GPU 加速版) 完整安装指南
  • B站的视频资源转换为可用的MP4文件
  • 5. 数据类型转换
  • 有没有更多Java进阶项目?
  • Rada and the Chamomile Valley(Tarjan缩点+多源BFS)
  • Jfrog开源替代,推荐一款国产开源免费的制品管理工具 - Hadess
  • 《C++进阶之C++11》【列表初始化 + 右值引用】
  • 【Redis】:从应用了解Redis
  • 从零到一打造前端内存监控 SDK,并发布到 npm ——基于 TypeScript + Vite + ECharts的解决方案
  • 【星海随笔】RabbitMQ容器篇
  • OpenCV:人脸识别实战,3 种算法(LBPH/EigenFaces/FisherFaces)代码详解
  • OneSignal PHP SDK v2 版本实现指南
  • Dockerfile构建镜像以及网络
  • 鸿蒙音乐播放器基础实现
  • Vue3》》Vite》》文件路由 vite-plugin-pages、布局系统 vite-plugin-vue-layouts
  • 深入解析 MySQL MVCC:高并发背后的数据时光机
  • 汽车冷却系统的冷却水管介绍
  • 基础架构设计
  • 从分散到统一:基于Vue3的地图模块重构之路
  • JVM实际内存占用
  • Spark SQL 桶抽样(Bucket Sampling)
  • 常见的【垃圾收集算法】