MySQL觸發器是一種存儲在數據庫中的程序,它會在某個特定的事件發生時自動執行。觸發器的定義包括觸發器的名稱、觸發事件類型、觸發時機以及觸發器執行的SQL語句。以下是定義MySQL觸發器的語法:
CREATE TRIGGER trigger_name
trigger_time trigger_event
ON table_name FOR EACH ROW
BEGIN
-- 觸發器執行的SQL語句
END;
其中:
trigger_name
:觸發器的名稱,用于唯一標識一個觸發器。trigger_time
:觸發時機,可以是BEFORE
(在操作執行前)或AFTER
(在操作執行后)。trigger_event
:觸發事件類型,可以是INSERT
(插入新記錄)、UPDATE
(更新記錄)、DELETE
(刪除記錄)或CREATE
、ALTER
、DROP
(結構變更)。table_name
:觸發器作用的數據表名稱。FOR EACH ROW
:表示觸發器對每一行數據都執行一次。如果不加此選項,則觸發器僅對滿足條件的新記錄或修改記錄執行。BEGIN ... END
:觸發器執行的SQL語句塊。可以包含多條語句,但需用分號分隔。以下是一個簡單的MySQL觸發器示例,該觸發器會在向employees
表中插入新記錄之前,自動將新員工的salary
字段值增加10%:
CREATE TRIGGER increase_salary_before_insert
BEFORE INSERT
ON employees FOR EACH ROW
BEGIN
SET NEW.salary = NEW.salary * 1.1;
END;