MySql触发器update实例详情
MySQL触发器是一种在表上执行自动化操作的特殊类型存储过程。当指定的事件发生时,触发器会触发并执行定义的操作。
以下是一个MySQL触发器的UPDATE实例的详细说明:
假设有一个名为employees
的表,包含以下列:
id
:员工ID(主键)name
:员工姓名salary
:员工薪水old_salary
:用于存储上次更新前的薪水
我们希望在更新员工薪水时,自动将旧薪水存储到old_salary
列中。我们可以使用以下触发器实现:
CREATE TRIGGER update_salary_trigger
BEFORE UPDATE ON employees
FOR EACH ROW
BEGIN
SET NEW.old_salary = OLD.salary;
END;
这个触发器被命名为update_salary_trigger
,在employees
表上的每次更新操作之前触发。BEFORE UPDATE
关键字指定了触发器在更新操作之前触发。
FOR EACH ROW
关键字指定了触发器为每行数据都执行一次。
BEGIN
和END
之间是触发器的操作。在这个例子中,我们使用SET
语句将旧薪水(即OLD.salary
)赋值给NEW.old_salary
,将更新前的薪水存储到old_salary
列中。
使用这个触发器后,当执行以下UPDATE语句时:
UPDATE employees
SET salary = 5000
WHERE id = 1;
触发器会在更新操作之前触发,将原始薪水(例如4000)存储到old_salary
列中。
最终,employees
表的更新后的数据如下:
| id | name | salary | old_salary |
|----|-------|--------|------------|
| 1 | John | 5000 | 4000 |
| 2 | Jane | 3000 | 3000 |
| 3 | Alice | 2000 | 2000 |
这就是MySQL触发器UPDATE实例的详细说明。触发器可以用于执行各种自动化操作,以满足特定的业务需求。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341