Mysql数据库中,监测某张表中某字段的修改情况(被哪个ip所修改、新老值)

在Mysql数据库中,通过写一个触发器,来监测某张表(q_device)字段(run_status)的改变情况。

sql 复制代码
【示例】
-- 1. 创建监测日志表
CREATE TABLE change_log (
    id INT AUTO_INCREMENT PRIMARY KEY,
    table_name VARCHAR(255),
    column_name VARCHAR(255),
    old_value TEXT,
    new_value TEXT,
    modified_by_ip VARCHAR(45),
    modified_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 2. 创建触发器 
DELIMITER $$
CREATE TRIGGER monitor_field_update
AFTER UPDATE ON q_device
FOR EACH ROW
BEGIN
    -- 获取客户端的 IP(从 MySQL 的 user() 函数解析)
    DECLARE user_ip VARCHAR(45);
    SET user_ip = SUBSTRING_INDEX(USER(), '@', -1);

-- 检查具体字段的更新,并记录到日志表
    IF OLD.run_status != NEW.run_status THEN
        INSERT INTO change_log (table_name, column_name, old_value, new_value, modified_by_ip)
        VALUES ('q_device', 'run_status', OLD.run_status, NEW.run_status, user_ip);
    END IF;
END$$
DELIMITER ;

监控记录将保存到change_log表当中。

相关推荐
myy-learn9 分钟前
32 SQLITE数据库
jvm·数据库·sqlite
JavaPub-rodert10 分钟前
Redis 和 MySQL 如何保证数据一致性?从业务方案到底层原理完整讲解
数据库·redis·mysql
大牧师16 分钟前
TypeORM 学习教程
数据库·sql·学习·node.js·orm·nest.js·typeorm
IvorySQL20 分钟前
PostgreSQL 日报| PGQ 功能发现严重缺陷(9 月 4 日)
数据库·postgresql
后台模板学习32 分钟前
用 IM 即时聊天项目一次讲清消息去重算法的踩坑与解决方案
java·数据库·spring
imbackneverdie39 分钟前
国内有哪些比较全面的生物医学相关数据库?
大数据·数据库·人工智能·ai·信息可视化·aigc·科研
数字智核1 小时前
2026昆山工厂空压机突然停机怎么办?找谁抢修
服务器·网络·数据库
AAA代码批发商1 小时前
Days 39 Linux C 开发之 SQLite 数据库完整学习笔记
linux·c语言·数据库
笑梦无境1 小时前
mysql的安装及配置(3)
数据库·mysql·adb
电商API_180079052471 小时前
跨境1688代采商家,如何借助API打通供应链,实现效率跃迁
大数据·数据库·网络爬虫