这个得用触发器才能搞吧
在MySQL中,可以使用触发器(Trigger)来标记修改过的数据列。触发器是一种数据库对象,它与表相关联,当表上发生特定事件(如插入、更新或删除)时,触发器会自动执行定义的操作。
下面是一个示例,演示如何使用触发器来标记修改过的数据列:
创建一个用于记录修改历史的表。
sql复制代码
| CREATE TABLE data_history ( |
| id INT PRIMARY KEY AUTO_INCREMENT, |
| table_name VARCHAR(255), |
| column_name VARCHAR(255), |
| old_value TEXT, |
| new_value TEXT, |
| update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
| ); |
创建一个触发器,在更新数据列时触发记录修改历史。
sql复制代码
| DELIMITER // |
| CREATE TRIGGER track_updates AFTER UPDATE ON your_table |
| FOR EACH ROW |
| BEGIN |
| INSERT INTO data_history (table_name, column_name, old_value, new_value) |
| VALUES (OLD.table_name, OLD.column_name, OLD.column_name_value, NEW.column_name_value); |
| END // |
| DELIMITER ; |
在上述示例中,your_table 是要监视更新的表名。触发器会在每次更新该表时,执行记录修改历史的操作。OLD 和 NEW 是MySQL中特殊的关键字,表示更新前后的值。通过将它们与相应的列名和值配对,我们可以轻松获取旧值和新值。
现在,每当更新your_table表中的数据列时,触发器都会将修改的历史记录插入到data_history表中,包括表名、列名、旧值和新值以及更新时间戳。