设计MySQL日志表用于记录数据变更,需包含操作类型、用户、时间、IP等信息,使用JSON字段存储新旧数据,通过触发器自动写入,并在user_id和changed_at上建立索引以提升查询效率。

设计MySQL数据日志表,核心目标是记录关键数据的变更历史,便于追踪、审计和恢复。重点在于结构清晰、性能可控、查询方便。
先确定你要记录什么:
以记录用户表(user)的变更为例,设计日志表 user_log:
CREATE TABLE user_log ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, operation ENUM('INSERT', 'UPDATE', 'DELETE') NOT NULL, user_id INT NOT NULL COMMENT '关联的用户ID', old_data JSON DEFAULT NULL COMMENT '变更前的数据', new_data JSON DEFAULT NULL COMMENT '变更后的数据', changed_by VARCHAR(50) DEFAULT NULL COMMENT '操作人', changed_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3), ip_address VARCHAR(45) DEFAULT NULL COMMENT '操作IP' );说明:
可通过触发器自动记录,例如为 user 表创建 UPDATE 触发器:
DELIMITER ;; CREATE TRIGGER user_after_update AFTER UPDATE ON user FOR EACH ROW BEGIN INSERT INTO user_log (operation, user_id, old_data, new_data, changed_by, ip_address) VALUES ('UPDATE', NEW.id, JSON_OBJECT('name', OLD.name, 'email', OLD.email), JSON_OBJECT('name', NEW.name, 'email', NEW.email), @operator, @ip); END;; DELIMITER ;注意:
以上就是mysql如何设计数据日志表的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号