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

相关推荐
云老大TG:@yunlaoda36012 分钟前
华为云国际站代理商DAS的跨境合规适配的应用场景有哪些?
网络·数据库·华为云
38242782731 分钟前
python3网络爬虫开发实战 第二版:绑定回调
开发语言·数据库·python
BIBI204936 分钟前
Windows 上配置 Nacos Server 3.x.x 使用 MySQL 5.7
java·windows·spring boot·后端·mysql·nacos·配置
wniuniu_44 分钟前
ceph的参数
java·数据库·ceph
一只专注api接口开发的技术猿1 小时前
智能决策数据源:利用 1688 商品详情 API 构建实时比价与供应链分析系统
大数据·前端·数据库
山峰哥1 小时前
SQL查询优化秘籍:从Explain分析到性能飞跃
开发语言·数据库·sql·oracle·性能优化·系统优化
刘一说1 小时前
MySQL 版本演进全景图:从 5.6 到 8.4 的技术变革与行业实践
数据库·mysql
风跟我说过她1 小时前
HBase完全分布式部署详细教程(含HA高可用版+普通非HA版)
大数据·数据库·分布式·centos·hbase
writeone1 小时前
数据库课后题重点摘要
数据库·oracle
杨云龙UP1 小时前
Oracle释放磁盘空间:alert.log和listener.log清理实战记录_20251225
运维·服务器·数据库·sql·oracle