oracle 數據庫觸發器可接收參數,增強靈活性。參數傳遞方式有兩種:1. 直接賦值:在觸發器定義中聲明參數,在觸發器代碼中使用名稱訪問;2. 使用 pragma autonomous_transaction:在觸發器定義中使用 pragma,在觸發器代碼中使用 autonomous_transaction 功能訪問參數。
Oracle 數據庫觸發器參數傳遞
觸發器可以接收參數,這增強了它們的靈活性,允許根據特定條件執行自定義操作。Oracle 數據庫支持通過兩種方式向觸發器傳遞參數:
方法 1:直接賦值
在觸發器定義中使用冒號 (:) 聲明觸發器參數。
在觸發器代碼中,使用傳入參數的名稱對其進行訪問。
示例:
<code class="sql">CREATE OR REPLACE TRIGGER my_trigger BEFORE INSERT ON my_table FOR EACH ROW BEGIN :new.my_column := :old.my_column + 1; END;</code>
登錄后復制
方法 2:使用 pragma autonomous_transaction
在觸發器定義中使用 pragma autonomous_transaction
。
在觸發器代碼中,使用 autonomous_transaction
功能訪問 PL/SQL 參數。
示例:
<code class="sql">CREATE OR REPLACE TRIGGER my_trigger PRAGMA AUTONOMOUS_TRANSACTION BEFORE INSERT ON my_table FOR EACH ROW BEGIN autonomous_transaction.new.my_column := autonomous_transaction.old.my_column + 1; END;</code>
登錄后復制
注意事項:
觸發器參數只能是 IN 參數。
傳遞的參數值在觸發器執行期間保持不變。
在使用 pragma autonomous_transaction 時,觸發器會在 AUTONOMOUS 事務中運行,與觸發器調用的事務隔離。