在MySQL中,更新觸發器可以用于在表的更新操作時執行一些業務邏輯。下面是MySQL更新觸發器的幾個要點:
- 更新觸發器可以定義在表的 BEFORE 或 AFTER 事件上,具體取決于需要執行的業務邏輯。 - 更新觸發器可以在多個行或單個行的更新操作中執行,具體取決于觸發器的定義。 - 更新觸發器可以使用 OLD 和 NEW 關鍵字來訪問更新前和更新后的行數據。比如 OLD.column_name 獲取更新前的某個字段的值,NEW.column_name 獲取更新后的某個字段的值。
下面是一個簡單的MySQL更新觸發器的例子:
CREATE TRIGGER trigger_name BEFORE/AFTER UPDATE ON table_name FOR EACH ROW BEGIN -- 執行一些業務邏輯 END;
其中 trigger_name 是觸發器名稱,table_name 是表名,BEFORE/AFTER 指定觸發器是在更新前還是更新后執行,FOR EACH ROW 意味著該觸發器將為每行更新操作執行。BEGIN 和 END 之間是觸發器的具體業務邏輯。
在具體業務邏輯的實現過程中,可以用 IF ... THEN ... ELSE ... END IF 來實現條件判斷,可以用 CASE ... WHEN ... THEN ... END CASE 來實現分支判斷,可以使用 UPDATE 語句來執行一些更新操作。
CREATE TRIGGER update_employee_salary AFTER UPDATE ON employees FOR EACH ROW BEGIN IF NEW.salary >OLD.salary THEN UPDATE bonus SET amount = amount + 100 WHERE emp_id = NEW.emp_id; ELSEIF NEW.salary< OLD.salary THEN UPDATE bonus SET amount = amount - 100 WHERE emp_id = NEW.emp_id; END IF; END;
上述例子定義了一個名為 update_employee_salary 的觸發器,在 employees 表更新后執行。如果新的薪水比舊的薪水高,則為該員工增加一個 $100 的獎金;如果新的薪水比舊的薪水低,則為該員工減少 $100 的獎金。