MySQL觸發(fā)器是一種存儲在數(shù)據(jù)庫中的程序,它會在某個特定的事件發(fā)生時自動執(zhí)行。觸發(fā)器的定義包括觸發(fā)器的名稱、觸發(fā)事件類型、觸發(fā)時機以及觸發(fā)器執(zhí)行的SQL語句。以下是定義MySQL觸發(fā)器的語法:
CREATE TRIGGER trigger_name
trigger_time trigger_event
ON table_name FOR EACH ROW
BEGIN
-- 觸發(fā)器執(zhí)行的SQL語句
END;
其中:
trigger_name
:觸發(fā)器的名稱,用于唯一標(biāo)識一個觸發(fā)器。trigger_time
:觸發(fā)時機,可以是BEFORE
(在操作執(zhí)行前)或AFTER
(在操作執(zhí)行后)。trigger_event
:觸發(fā)事件類型,可以是INSERT
(插入新記錄)、UPDATE
(更新記錄)、DELETE
(刪除記錄)或CREATE
、ALTER
、DROP
(結(jié)構(gòu)變更)。table_name
:觸發(fā)器作用的數(shù)據(jù)表名稱。FOR EACH ROW
:表示觸發(fā)器對每一行數(shù)據(jù)都執(zhí)行一次。如果不加此選項,則觸發(fā)器僅對滿足條件的新記錄或修改記錄執(zhí)行。BEGIN ... END
:觸發(fā)器執(zhí)行的SQL語句塊。可以包含多條語句,但需用分號分隔。以下是一個簡單的MySQL觸發(fā)器示例,該觸發(fā)器會在向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;