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實例的詳細說明。觸發器可以用于執行各種自動化操作,以滿足特定的業務需求。