sql 觸發(fā)器是一種自動在特定事件發(fā)生時執(zhí)行操作的數(shù)據(jù)庫對象。創(chuàng)建觸發(fā)器包括以下步驟:選擇觸發(fā)器類型:before、after 或 instead of指定觸發(fā)事件:insert、update 或 delete編寫觸發(fā)器代碼,指定執(zhí)行的操作使用 create trigger 語句創(chuàng)建觸發(fā)器
如何創(chuàng)建 SQL 觸發(fā)器
SQL 觸發(fā)器是一種數(shù)據(jù)庫對象,在特定事件發(fā)生時自動觸發(fā)一組操作。例如,在向表中插入新行時執(zhí)行操作。
創(chuàng)建觸發(fā)器
要創(chuàng)建觸發(fā)器,可以使用以下步驟:
選擇觸發(fā)器類型:SQL 支持以下類型的觸發(fā)器:
BEFORE:在執(zhí)行事件之前觸發(fā)
AFTER:在執(zhí)行事件之后觸發(fā)
INSTEAD OF:替代觸發(fā)事件
指定觸發(fā)事件:觸發(fā)器可以對以下事件進行響應(yīng):
INSERT:向表中插入新行
UPDATE:更新表中現(xiàn)有行
DELETE:從表中刪除行
編寫觸發(fā)器代碼:觸發(fā)器代碼指定要執(zhí)行的操作。這可以包括插入新行、更新現(xiàn)有行或向其他表寫操作。
創(chuàng)建觸發(fā)器:使用 CREATE TRIGGER 語句創(chuàng)建觸發(fā)器。語法如下:
CREATE TRIGGER [觸發(fā)器名稱] ON [表名稱] FOR [觸發(fā)事件] AS BEGIN [觸發(fā)器代碼] END;
登錄后復(fù)制
示例
以下示例創(chuàng)建一個 BEFORE INSERT 觸發(fā)器,在向 “客戶” 表中插入新行之前插入當(dāng)前時間戳:
CREATE TRIGGER before_customer_insert ON customers FOR INSERT AS BEGIN UPDATE customers SET created_at = CURRENT_TIMESTAMP WHERE id = NEW.id; END;
登錄后復(fù)制
注意:
觸發(fā)器名稱必須唯一。
表名稱必須是觸發(fā)器將作用到的表。
觸發(fā)事件指定觸發(fā)器的觸發(fā)條件。
BEGIN 和 END 語句標(biāo)記觸發(fā)器代碼塊的開始和結(jié)束。
NEW 和 OLD 表達式分別引用新插入或更新的行和舊的行。
觸發(fā)器代碼可以包含 SQL 語句、流程控制結(jié)構(gòu)和函數(shù)。