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表当中。

相关推荐
❀͜͡傀儡师12 小时前
docker部署WhoDB开源轻量级数据库管理工具
数据库·docker·开源
皙然12 小时前
Redis八大核心数据类型详解:从底层实现到实战落地
数据库·redis·bootstrap
时光追逐者12 小时前
一款免费、简单、高效的在线数据库设计工具
数据库·mysql·oracle·sql server
another heaven12 小时前
【软考 2026 最新版 NoSQL 数据库全分类】
数据库·nosql
满天星830357712 小时前
【MySQL】表的操作
linux·服务器·数据库·mysql
yashuk12 小时前
Ubuntu 系统下安装 Nginx
数据库·nginx·ubuntu
F1FJJ12 小时前
VS Code 里管理 PostgreSQL,有哪些选择?主流扩展横向对比
网络·数据库·postgresql·容器
迷路爸爸18012 小时前
FRP 安全内网穿透配置:TCP 与 STCP 两种安全 SSH 穿透方案
tcp/ip·安全·ssh
Bdygsl13 小时前
MySQL(8)—— 事务
数据库·mysql
IvorySQL13 小时前
直播回顾| PostgreSQL 18.3 x IvorySQL 5.3:开启 AI 数据库新纪元
数据库·postgresql·开源