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

相关推荐
九皇叔叔1 小时前
深度拆解MySQL InnoDB存储引擎架构:从内存到磁盘的全链路解析
mysql·innodb·存储引擎
Sunia1 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题二:《Milvus 向量数据库:从零开始搭建 RAG 系统的核心组件》
数据库
絆人心1 小时前
最新 SQL 常用语句大全(新手入门 + 老手速查,含 DQL/DML/DDL)
数据库·sql·oracle
keyborad pianist1 小时前
一篇文章学会Redis
数据库·redis·缓存
星辰_mya1 小时前
SQL 性能调优:EXPLAIN 详解与慢查询优化案例
数据库·sql·面试·架构师
xixingzhe21 小时前
spring boot druid 10秒超时问题
java·数据库·spring boot
IndulgeCui1 小时前
Kingbase 身份认证与权限控制实践—数据库安全的第一道防线
数据库
AAA_搬砖达人小郝1 小时前
SQL 高级查询技巧:WITH + UNION ALL + EXISTS + WHERE TRUE/FALSE 联合实战
数据库·sql
Yushan Bai1 小时前
RAC环境数据库节点异常重启问题的分析(存储光纤信号问题)
数据库
WINDHILL_风丘科技1 小时前
FlexPro高级应用之模板定制
数据库·汽车·汽车测试·flexpro