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

相关推荐
qq_37215423几秒前
CSS如何改变单个网格项目的对齐方式
jvm·数据库·python
kexnjdcncnxjs1 分钟前
CodeIgniter4安全加固指南:防御XSS与CSRF攻击
jvm·数据库·python
2401_871492852 分钟前
Imagick PDF 处理失败的常见原因与解决方案
jvm·数据库·python
小年糕是糕手5 分钟前
【C/C++刷题集】栈、stack、队列、queue核心精讲
c语言·开发语言·数据结构·数据库·c++·算法·蓝桥杯
fred_kang5 分钟前
MySQL锁表诊断与解决方案
android·mysql·mariadb
鸽芷咕9 分钟前
KingbaseES与Oracle兼容性深度解析:数据类型、内置函数、PL/SQL全面对比
数据库·sql·oracle
wefg112 分钟前
【计算机网络】传输层协议(UDP/TCP)
tcp/ip·计算机网络·udp
水木流年追梦16 分钟前
CodeTop Top 300 热门题目10-验证IP地址
python·网络协议·tcp/ip·算法·leetcode
2301_8084143818 分钟前
MySQL数据类型
数据库·mysql
minji...19 分钟前
Linux 线程同步与互斥(六) 线程安全与重入问题,死锁,线程done
linux·运维·开发语言·数据库·c++·算法·安全