在Oracle的觸發器中執行DDL語句

2021-04-17 16:22:10 字數 762 閱讀 7628

觸發器無需commit

也不能寫commit

觸發器和觸發它的dml是同乙個事務

dml提交了,觸發器的操作也提交了,要不就一起回滾了

當然,如果你一定要在觸發器裡寫commit

那就用自治事務

相當於乙個事務裡的子事務

正常情況下,oracle規定在觸發器中不能執行 ddl語句和commit,rollback語句。

解決辦法有兩種:

1.在可以在觸發器中加入:pragma autonomous_transaction; 表示自由事務處理。

如: create or replace trigger t_create before insert on t_rcatalogue

for each row

declare

pragma autonomous_transaction;

nrdsid varchar(500):='';

begin

2.可以另外寫乙個方法,把dll語句傳遞到這個方法中去執行。

注釋:ddl語句:ddl語句用語定義和管理資料庫中的物件,如create,alter,drop,truncate等;ddl操作是隱性提交的!操作立即生效,原資料不放到rollback segment中,不能回滾. 操作不觸發trigger

dml(data manipulation language)資料操縱語言命令使使用者能夠查詢資料庫以及操作已有資料庫中的資料。如insert,delete,update,select等都是dml.

oracle的觸發器執行插入

create or replace trigger tr msdata 當插入資料的時候進行運算 before insert on ms realdata1 for each row declare ua number 12,2 a相電壓 ub number 12,2 b相電壓 uc number ...

Oracle中的觸發器

oracle 中的觸發器 在oracle 中,觸發器是一種特殊的子程式,它在插入 更新 刪除資料時自動執行。使用觸發器可以實現比較複雜的約束。pk fk uq ck df 都是單錶約束資料完整性。觸發器可以分為 insert 觸發器 update 觸發器 delete 觸發器。insert 觸發器在...

觸發器詳解 (一)D觸發器

觸發器是時序邏輯電路的基本單元,用來儲存1位2進製資訊,具有記憶和儲存功能,其資訊由雙穩態電路來儲存。觸發器位脈衝邊緣敏感器間,分為上公升沿敏感和下降沿敏感。觸發器的種類很多,由d觸發器,j k觸發器,t觸發器等。並且根據運用場景的不同,觸發器還會有置位,復位,使能和選擇等功能。d觸發器是一種最簡單...