MySql觸發(fā)器update實(shí)例詳情

小云
128
2024-02-05 11:11:36
欄目: 云計(jì)算

MySQL觸發(fā)器是一種在表上執(zhí)行自動(dòng)化操作的特殊類型存儲(chǔ)過(guò)程。當(dāng)指定的事件發(fā)生時(shí),觸發(fā)器會(huì)觸發(fā)并執(zhí)行定義的操作。

以下是一個(gè)MySQL觸發(fā)器的UPDATE實(shí)例的詳細(xì)說(shuō)明:

假設(shè)有一個(gè)名為employees的表,包含以下列:

  • id:?jiǎn)T工ID(主鍵)
  • name:?jiǎn)T工姓名
  • salary:?jiǎn)T工薪水
  • old_salary:用于存儲(chǔ)上次更新前的薪水

我們希望在更新員工薪水時(shí),自動(dòng)將舊薪水存儲(chǔ)到old_salary列中。我們可以使用以下觸發(fā)器實(shí)現(xiàn):

CREATE TRIGGER update_salary_trigger
BEFORE UPDATE ON employees
FOR EACH ROW
BEGIN
    SET NEW.old_salary = OLD.salary;
END;

這個(gè)觸發(fā)器被命名為update_salary_trigger,在employees表上的每次更新操作之前觸發(fā)。BEFORE UPDATE關(guān)鍵字指定了觸發(fā)器在更新操作之前觸發(fā)。

FOR EACH ROW關(guān)鍵字指定了觸發(fā)器為每行數(shù)據(jù)都執(zhí)行一次。

BEGINEND之間是觸發(fā)器的操作。在這個(gè)例子中,我們使用SET語(yǔ)句將舊薪水(即OLD.salary)賦值給NEW.old_salary,將更新前的薪水存儲(chǔ)到old_salary列中。

使用這個(gè)觸發(fā)器后,當(dāng)執(zhí)行以下UPDATE語(yǔ)句時(shí):

UPDATE employees
SET salary = 5000
WHERE id = 1;

觸發(fā)器會(huì)在更新操作之前觸發(fā),將原始薪水(例如4000)存儲(chǔ)到old_salary列中。

最終,employees表的更新后的數(shù)據(jù)如下:

| id | name  | salary | old_salary |
|----|-------|--------|------------|
| 1  | John  | 5000   | 4000       |
| 2  | Jane  | 3000   | 3000       |
| 3  | Alice | 2000   | 2000       |

這就是MySQL觸發(fā)器UPDATE實(shí)例的詳細(xì)說(shuō)明。觸發(fā)器可以用于執(zhí)行各種自動(dòng)化操作,以滿足特定的業(yè)務(wù)需求。

0