阅读量:2
在 SQL 中,可以使用触发器(Triggers)来跟踪数据变化。触发器是一种自动执行的存储过程,当对表中的数据进行插入、更新或删除操作时,触发器会自动执行相应的操作。以下是如何使用触发器跟踪数据变化的示例:
- 创建触发器
首先,需要创建一个触发器。以下是一个简单的示例,当对表 employees 中的数据插入或更新时,触发器会自动将变化的数据插入到另一个表 employee_changes 中。
-- 创建 employee_changes 表,用于存储数据变化信息
CREATE TABLE employee_changes (
id INT AUTO_INCREMENT PRIMARY KEY,
employee_id INT,
old_data TEXT,
new_data TEXT,
change_type VARCHAR(10),
change_time TIMESTAMP
);
-- 创建触发器,当 employees 表中的数据插入或更新时,将变化的数据插入到 employee_changes 表中
DELIMITER //
CREATE TRIGGER track_employee_changes
AFTER INSERT ON employees
FOR EACH ROW
BEGIN
INSERT INTO employee_changes (employee_id, old_data, new_data, change_type)
VALUES (NEW.id, NULL, NEW, 'INSERT');
END;
//
CREATE TRIGGER track_employee_changes_update
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN
-- 如果旧数据不为空,则将旧数据插入到 employee_changes 表中
IF OLD.name IS NOT NULL THEN
INSERT INTO employee_changes (employee_id, old_data, new_data, change_type)
VALUES (OLD.id, OLD.name, NEW.name, 'UPDATE');
END IF;
-- 如果新数据不为空,则将新数据插入到 employee_changes 表中
IF NEW.name IS NOT NULL THEN
INSERT INTO employee_changes (employee_id, old_data, new_data, change_type)
VALUES (NEW.id, OLD.name, NEW.name, 'UPDATE');
END IF;
END;
//
DELIMITER ;
- 使用触发器
现在,当对表 employees 中的数据进行插入或更新操作时,触发器会自动将变化的数据插入到 employee_changes 表中。以下是一些示例操作:
-- 插入新数据
INSERT INTO employees (id, name) VALUES (1, 'John Doe');
-- 更新数据
UPDATE employees SET name = 'Jane Doe' WHERE id = 1;
- 查询数据变化
要查询数据变化信息,可以查询 employee_changes 表:
SELECT * FROM employee_changes;
这将显示所有数据变化记录,包括员工 ID、旧数据(如果有)、新数据(如果有)、变化类型和变化时间。
以上就是关于“SQL Following怎样跟踪数据变化”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm