在Mysql数据库中,通过写一个触发器,来监测某张表(q_device)字段(run_status)的改变情况。
【示例】
-- 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 THENINSERT 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表当中。