Autonóm tranzakciók ----------------------------- Az autonóm tranzakciók (AT) a fő tranzakció (MT) által indított, attól független tranzakciók. Ezek egy külön rutinban futnak, amit az AUTONOMOUS_TRANSACTION pragmával jelölünk meg. A pragmát a procedúra (blokk, fv, trigger) deklaratív részébe kell tenni. Amikor az autonóm rutin elindul a fő tranzakció felfüggesztésre kerül. Az autonóm tranzakció nem látja a fő tranzakció módosításait. Az autonóm tranzakció módosításai azonnal láthatók lesznek a COMMIT-ja után. Autonóm tranzakció másik autonóm tranzakciót indíthat. Az autonóm tranzakció nem módosíthatja a fő tranzakció által zárolt objektumokat, mert az deadlockhoz vezetne. Lásd pl. az alábbit. CREATE OR REPLACE PROCEDURE proc_main IS BEGIN -- UPDATE tr_proba SET szoveg=szoveg||'MAIN1'; <- emiatt lenne deadlock proc_aut; UPDATE tr_proba SET szoveg=szoveg||'MAIN2'; COMMIT; END; CREATE OR REPLACE PROCEDURE proc_aut IS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN UPDATE tr_proba set szoveg=szoveg||'AUT'; COMMIT; END; Autonóm tranzakció nélkül az alprogram beleszólhat a főprogram tranzakciójába és fordítva. CREATE OR REPLACE PROCEDURE proc_aut IS -- PRAGMA AUTONOMOUS_TRANSACTION; BEGIN ROLLBACK; UPDATE tr_proba set szoveg=szoveg||'AUT'; END; CREATE OR REPLACE PROCEDURE proc_main IS BEGIN UPDATE tr_proba SET szoveg=szoveg||'MAIN1'; proc_aut; UPDATE tr_proba SET szoveg=szoveg||'MAIN2'; COMMIT; END; select * from tr_proba SORSZ SZAM SZOVEG ---------- ---------- ------------------- 1 10 Elso sorAUTMAIN2 2 20 Masodik sorAUTMAIN2