Použití autonomní transakce pro cokoli jiného než protokolování, které chcete zachovat, když se nadřazená transakce vrátí zpět, je téměř jistě chyba. Toto není dobré využití autonomní transakce.
Co se například stane, když aktualizuji řádek v t1
ale moje transakce se vrátí zpět. t2
změny již byly provedeny a potvrzeny, aby se nevrátily zpět. To obecně znamená, že t2
údaje jsou nyní nesprávné. Celým smyslem transakcí je zajistit, aby sada změn byla atomická a byla buď zcela úspěšná, nebo zcela vrácena. Povolit, aby byl kód částečně úspěšný, není téměř nikdy dobrý nápad.
Těžko vidím, co si zde pomocí autonomní transakce koupíte. Často uvidíte, že lidé nesprávně používají autonomní transakce, aby nesprávně obcházeli mutující spouštěcí chyby. Kód, který jste zveřejnili, by však nevygeneroval chybu mutujícího spouštěče, pokud by na t2
nebylo spouštěč na úrovni řádku který se také pokoušel aktualizovat t1
nebo nějaký podobný mechanismus, který zaváděl mutující tabulku. Pokud je to však tento případ, použití autonomní transakce je obecně ještě horší, protože autonomní transakce pak nevidí změny prováděné v nadřazené transakci, což téměř jistě způsobí, že se kód chová jinak, než byste si přáli.