oracle 數據庫觸發器在 ddl(如 create、alter)或 dml(如 insert、update、delete)操作時激活:ddl 操作激活基礎表上定義的觸發器。dml 操作激活基礎表上定義的觸發器。
Oracle 數據庫觸發器激活
激活觸發器的方法
Oracle 數據庫觸發器可以在以下兩種情況下自動激活:
DDL 操作:當對基礎表進行諸如 CREATE、ALTER、TRUNCATE 等 DDL 操作時,將激活該表上定義的觸發器。
DML 操作:當對基礎表進行諸如 INSERT、UPDATE、DELETE 等 DML 操作時,將激活該表上定義的觸發器。
觸發器激活示例
為了說明觸發器的激活,我們創建一個簡單的示例表以及一個在該表上定義的觸發器:
<code class="sql">-- 創建示例表 CREATE TABLE employees ( id NUMBER PRIMARY KEY, name VARCHAR2(50), salary NUMBER ); -- 定義觸發器 CREATE TRIGGER salary_check BEFORE UPDATE ON employees FOR EACH ROW BEGIN IF NEW.salary </code>
登錄后復制
現在,當我們嘗試使用 DML 操作更新員工表時,觸發器將被激活并執行:
<code class="sql">-- 嘗試更新員工的薪水為負值 UPDATE employees SET salary = -100 WHERE id = 1; -- 觸發器將引發錯誤并回滾操作 ORA-20001: Salary cannot be negative</code>
登錄后復制
需要注意的要點
每個表上的觸發器只會在特定的 DML 或 DDL 操作上激活。
觸發器可以定義為 BEFORE(在操作執行前)或 AFTER(在操作執行后)激活。
觸發器可以在 INSERT、UPDATE、DELETE 或 DDL 操作后激活。
觸發器可以用來強制完整性約束、執行業務邏輯或記錄對表的更改。