如何在oracle中使用DDL語句!

2021-04-21 10:44:17 字數 881 閱讀 6860

大家都知道觸發器是無需

commit

的,而且也不能寫

commit

;觸發器和觸發它的

dml是同乙個事務

dml提交了,觸發器的操作也提交了,所以無需

commit;

否則就會造成錯誤資訊。

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

commit

,那也是可以的,可以用

oracle

中的自治事務來處理,自治事務就相當於乙個事務裡的子事務。

在正常情況下,

oracle

規定在觸發器中不能執行

ddl(

即create/alter/drop)

語句和commit/rollback

語句的,因為

ddl操作是隱性提交的,在觸發器不允許有

commit

,如在觸發器中加入

ddl語句,這種隱性提交就會導致錯誤資訊;但有時特殊情況下需要在觸發器中使用

ddl語句,這時怎麼辦。

可以採取以下的解決辦法:

1.在可以在觸發器中加入:

pragma autonomous_transaction;(

在declare

後面)

表示是自由事務處理。

如:create or replace trigger t_create before insert on t_tax_ins_bd

for each row

declare

pragma autonomous_transaction;

nrdsid varchar(500):='';

begin

通過以上方法即可解決觸發器中不能有

ddl語句的問題!

如何在Oracle中使用Sequence

sql server可以自增字段,但是oracle中在建表的時候可沒有這個選項,但是可以通過觸發器 trigger 或者序列 sequence 來實現,本文主要講述sequence。二者的區別oracle中自增字段的兩種方法的比較 trigger和sequence 建立sequence的語法很簡單,...

如何在Oracle中使用Sequence

sql server可以自增字段,但是oracle中在建表的時候可沒有這個選項,但是可以通過觸發器 trigger 或者序列 sequence 來實現,本文主要講述sequence。二者的區別oracle中自增字段的兩種方法的比較 trigger和sequence 在oracle中,沒有象ms sq...

如何在AndroidStudio中使用AIDL

本章節介紹如何在androidstudio中使用aidl 2.在aidl下建立乙個包,包裡建立乙個 aidl檔案,右鍵aidl new aidl aidl file 紅框就是建立完成後的樣子 3.在aidl檔案寫要被呼叫的方法,此方法不能有許可權修飾符 4.首先build下,然後建立乙個servic...