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