create or replace procedure testa
(a varchar2,
b varchar2)is
vs_str varchar2(10);
begin
insert into test_table_t values(a);
vs_str := b;
testb(bs_str);
rollback;
end;
--將過程testb(msg varchar2)定義為自治事務:
create or replace procedure testb(msg varchar2)
is
pragma autonomous_transaction;
begin
insert into test_table_t values(msg);
commit;
end;
這樣,test_table_t中之前testa過程寫入的資料就會因為testa過程的rollback而回滾掉。而因為testa呼叫了被定義為自治事務的testb,而且testb也向表test_table_t中寫入了資料b並做了commit操作。
那麼,testa的rollback對testb寫入的資料就沒有影響,而且testb的commit對testa的rollback也不會有影響。表test_table_t中會保留資料b。
自治事務參考
在觸發器中操作觸發此觸發器的表,用 pragma autonomous transaction 選項。自治事務理解 一般情況下利用觸發器禁止某些對錶的更新等操作時,若記錄日誌,則觸發器最後丟擲異常時會造成日誌回滾。利用自治事務可防止此點。對資料庫有寫操作 insert update delete c...
觸發器 自治事務
原帖位址 問題如下 表 ksource.userinfo 發生了變化,觸發器 函式不能讀它 userinfo userid,username,departid,serialnum,對於乙個部門 departid相同 下的使用者,我要讓其序號serialnum保持連續,就建立了乙個觸發器 引用 cre...
Seata 乙個簡單可擴充套件自治事務架構
乙個高效能,易於上手的,用於微服務架構的分布式事務解決方案。微服務中的分布式事務問題傳統的單體應用,它的業務元件通常有3個模組。它使用乙個單體的本地資料來源,通常地,使用本地事務保證資料一致性。在微服務中就會變得不一樣了,上面提到的3個模組將拆分成3個不同的資料來源。每個單體的服務自然可以使用本地事...