溫馨提示×

mysql觸發(fā)器如何定義

小億
83
2024-09-28 23:47:44
欄目: 云計算

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、ALTERDROP(結(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;

0