新闻中心
mysql如何实现日志记录表
通过创建日志表和触发器实现MySQL操作记录,1. 创建包含操作类型、时间、数据变更等字段的operation_log表;2. 为users表设置INSERT、UPDATE、DELETE触发器,自动记录操作详情至日志表;3. 应用层可显式插入日志以精确记录操作人信息;4. 注意日志增长、性能影响及敏感数据脱敏。

在 MySQL 中实现日志记录表,主要是通过创建专门的表来存储操作日志,并结合触发器(Trigger)或应用程序逻辑将增删改操作记录下来。以下是具体实现方式。
1. 创建日志表
先设计一张用于存储操作日志的表,包含关键信息如操作类型、操作时间、操作人、被修改的数据等。
CREATE TABLE operation_log (
id INT AUTO_INCREMENT PRIMARY KEY,
table_name VARCHAR(50) NOT NULL, -- 被操作的表名
operation_type ENUM('INSER
T', 'UPDATE', 'DELETE') NOT NULL, -- 操作类型
record_id INT, -- 被操作记录的主键
old_data JSON, -- 修改前的数据(UPDATE/DELETE)
new_data JSON, -- 修改后的数据(INSERT/UPDATE)
operated_by VARCHAR(50), -- 操作人(可从应用传入)
operation_time DATETIME DEFAULT CURRENT_TIMESTAMP -- 操作时间
);
2. 使用触发器自动记录日志
以用户表 users 为例,为其添加 INSERT、UPDATE、DELETE 触发器。
MGX
MetaGPT推出的自然语言编程工具
163
查看详情
-- 记录 INSERT 操作
DELIMITER $$
CREATE TRIGGER after_users_insert
AFTER INSERT ON users
FOR EACH ROW
BEGIN
INSERT INTO operation_log (table_name, operation_type, record_id, new_data, operated_by)
VALUES ('users', 'INSERT', NEW.id, JSON_OBJECT('name', NEW.name, 'email', NEW.email), USER());
END$$
<p>-- 记录 UPDATE 操作
CREATE TRIGGER after_users_update
AFTER UPDATE ON users
FOR EACH ROW
BEGIN
INSERT INTO operation_log (table_name, operation_type, record_id, old_data, new_data, operated_by)
VALUES ('users', 'UPDATE', NEW.id,
JSON_OBJECT('name', OLD.name, 'email', OLD.email),
JSON_OBJECT('name', NEW.name, 'email', NEW.email),
USER());
END$$</p><p>-- 记录 DELETE 操作
CREATE TRIGGER after_users_delete
AFTER DELETE ON users
FOR EACH ROW
BEGIN
INSERT INTO operation_log (table_name, operation_type, record_id, old_data, operated_by)
VALUES ('users', 'DELETE', OLD.id,
JSON_OBJECT('name', OLD.name, 'email', OLD.email),
USER());
END$$
DELIMITER ;</p>3. 应用层配合记录操作人
如果需要更精确的操作人信息(如应用用户),建议在应用代码中显式调用日志插入,而不是依赖 MySQL 的 USER() 函数。可以在执行数据库操作后,由程序向 operation_log 表写入日志。
例如:
INSERT INTO operation_log (table_name, operation_type, record_id, new_data, operated_by)
VALUES ('orders', 'INSERT', 1001, '{"amount": 299, "status": "paid"}', 'zhangsan');
4. 注意事项
- 日志表会不断增长,建议定期归档或清理旧数据。
- 使用 JSON 字段可以灵活存储不同表的结构,避免字段冗余。
- 触发器会影响性能,高并发场景下需评估影响,可考虑异步写日志。
- 敏感数据需脱敏后再记录,避免泄露。
基本上就这些。通过触发器 + 日志表的方式,能有效追踪数据库变更,便于审计和排查问题。
以上就是mysql如何实现日志记录表的详细内容,更多请关注其它相关文章!
# 自然语言
# 睢宁提供网站推广优势
# 南昌网站建设路小学
# 元宇宙搜索关键词排名
# 四川360网站推广公司
# 丽江产品营销推广售后服务
# 狮山网站优化渠道有哪些
# 合肥网站品牌推广
# 做seo在哪里投放
# 鞍山企业seo优化模式
# 广东网站竞价推广运营
# 被操
# mysql
# 应用层
# 操作步骤
# 全攻略
# 多个
# 如何实现
# 镜像
# 离线
# 敏感数据
# ai
# json
# js
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
在Pyomo中实现基于变量的条件约束:Big-M方法详解
黑猫投诉统一入口官网 消费者权益保护投诉平台
必由学官方网站入口 必由学学生教师共用登录通道
sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE
包子漫画官方网站在线链接-包子漫画在线阅读平台主页地址
Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略
AO3最新可访问网址 Archive of Our Own官方在线入口
高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法
抖音从哪里进入网页版_抖音官方入口链接
迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法
使用Python高效删除Word宏并转换DOCM为DOCX格式
PHP中高效并行检查多链接状态的教程
Win11怎么用U盘重装系统 Win11制作启动盘并重装系统完整教程【详解】
铁路12306卧铺选择攻略 铁路12306下铺座位预定技巧
学习通在线学习平台 学习通网页版直接进入课程中心
J*aScript中如何高效提取对象指定属性
小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口
机器学习中对数变换预测结果的反向还原
处理嵌套交互式控件:前端可访问性指南
搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具
品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程
服务端验证_j*ascript输入检查
Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置
优化MinIO list_objects_v2 操作的性能瓶颈与最佳实践
Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性
Lar*el Excel导入时生成自定义递增ID的策略与实践
红果短剧网页版官网入口 官方最新网址发布
css滚动动画效果怎么实现_使用Animate.css滚动触发动画类
poki免费入口快捷访问 poki人气小游戏直接玩站点
批改网学生版PC登录 批改网官网登录系统入口
c++如何使用折叠表达式(Fold Expressions)_c++17可变参数模板新技巧
解决移动端滚动问题的overflow属性应用指南
优化Log4j2控制台输出性能:解决异步日志瓶颈
R星幕后开发视频泄露 包含《GTA6》等多款大作
谷歌google账号怎么注册账号 谷歌账号注册官方流程
PHP中SSG-WSG API的AES加密实践:正确使用初始化向量
html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】
c++中的std::forward_list和std::list有什么不同_c++ forward_list与list区别分析
钉钉视频会议画面卡顿如何解决 钉钉会议画面优化方法
今日头条怎么同步内容到抖音_今日头条内容同步到抖音教程
高德地图怎么看全景照片_高德地图全景照片浏览教程
b站如何看历史记录_b站观看历史找回方法
漫蛙漫画网页端入口 漫蛙2官方正版漫画站点
Android Studio计算器C键逻辑错误排查与修复:条件判断优化指南
C++如何检测键盘输入_C++ _kbhit与_getch函数非阻塞输入
C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果
J*aScript异步迭代器_j*ascript异步遍历
处理Kafka消费者会话超时:深入理解消息处理语义与幂等性
谷歌推RCS信息存档功能:公司可监控员工私密信息!
文本文档写html代码怎么运行_文本文档html代码运行步骤【教程】


2025-10-03
浏览次数:次
返回列表
T', 'UPDATE', 'DELETE') NOT NULL, -- 操作类型
record_id INT, -- 被操作记录的主键
old_data JSON, -- 修改前的数据(UPDATE/DELETE)
new_data JSON, -- 修改后的数据(INSERT/UPDATE)
operated_by VARCHAR(50), -- 操作人(可从应用传入)
operation_time DATETIME DEFAULT CURRENT_TIMESTAMP -- 操作时间
);