觸發器是在特定事件發生時自動執行 sql 語句的數據庫對象。在 oracle 中,可以通過 create trigger 語句創建觸發器,該語句指定觸發器名稱、執行時機、作用表、觸發事件和 sql 語句代碼。觸發器可用于在插入、更新或刪除記錄時自動執行操作。例如,在 customers 表中插入新記錄時,可以創建一個觸發器來更新 last_updated 列。觸發器還可以使用 pl/sql 塊進行更復雜的操作,并支持 row、statement 和 system 等多種類型。
如何使用 Oracle 創建觸發器
觸發器是一種在特定事件發生時自動執行 SQL 語句的數據庫對象。Oracle 中的觸發器可用于執行各種任務,例如插入、更新或刪除記錄時自動執行操作。
創建觸發器
要創建觸發器,可以使用 Oracle 的 CREATE TRIGGER 語句。該語句采用以下語法:
CREATE TRIGGER BEFORE | AFTER | INSTEAD OF [FOR EACH ROW] ON FOR AS
登錄后復制
其中:
:要創建的觸發器的名稱。
BEFORE | AFTER | INSTEAD OF:指定觸發器在事件發生之前、之后或代替事件執行。
[FOR EACH ROW]:指定觸發器應為表中的每一行執行。如果省略,則觸發器將僅執行一次。
:觸發器附加到的表。
:觸發觸發器的事件,例如 INSERT、UPDATE 或 DELETE。
:觸發器執行的 SQL 語句。
觸發器示例
以下示例創建一個觸發器,在 customers 表中插入新記錄時更新 last_updated 列:
CREATE TRIGGER trg_customers_update BEFORE INSERT ON customers FOR EACH ROW AS BEGIN :NEW.last_updated := SYSDATE; END;
登錄后復制
此觸發器在插入新記錄之前將 last_updated 列設置為系統日期。
注意:
觸發器還可以使用 PL/SQL 塊進行更復雜的操作。
Oracle 支持多種類型的觸發器,包括 Row、Statement 和 System 觸發器。
創建觸發器時,應考慮性能影響和觸發器行為的預期后果。