觸發器是一種數據庫代碼,在特定事件(插入、更新、刪除)發生時自動執行。觸發器的語法包含觸發器名稱、表名稱和觸發時機(before/after)以及事件類型(insert/update/delete)。觸發器類型包括 before 和 after,事件類型包括 insert、update 和 delete。觸發器可用于數據完整性驗證、審計記錄、自動任務和業務邏輯。例如,可以創建觸發器在插入新行時記錄插入時間,以確保數據的一致性。
SQL 觸發器的使用和語法
什么是觸發器?
觸發器是數據庫中的一段代碼,當數據庫中的特定事件發生時自動觸發執行。它們用于在數據發生變化時執行自定義操作。
觸發器的語法
SQL 中觸發器的語法如下:
<code>CREATE TRIGGER trigger_name ON table_name FOR INSERT | UPDATE | DELETE AS BEGIN -- 觸發器代碼... END;</code>
登錄后復制
觸發器的類型
根據觸發時機,觸發器可分為以下類型:
BEFORE
觸發器:在事件發生之前執行。
AFTER
觸發器:在事件發生之后執行。
根據事件類型,觸發器可分為:
INSERT
觸發器:在插入新行時觸發。
UPDATE
觸發器:在更新現有行時觸發。
DELETE
觸發器:在刪除行時觸發。
觸發器的使用場景
觸發器廣泛用于以下場景:
數據完整性驗證:確保數據符合特定規則(例如,非空約束、唯一性約束)。
審計和記錄:跟蹤數據庫中的變化并記錄用戶活動。
自動任務:在數據更改時自動執行特定任務(例如,發送電子郵件通知)。
業務邏輯:實現復雜的業務規則,例如計算 derived column 或維護關聯表。
示例
以下是一個示例觸發器,用于在向 users
表中插入新行時記錄插入時間:
<code class="sql">CREATE TRIGGER insert_timestamp BEFORE INSERT ON users AS BEGIN SET NEW.created_at = CURRENT_TIMESTAMP(); END;</code>
登錄后復制
當插入新行到 users
表時,insert_timestamp
觸發器會在插入之前執行,并自動將當前時間戳設置為新建行的 created_at
字段。