Używanie transakcji autonomicznej do czegokolwiek innego niż rejestrowanie, które chcesz zachować, gdy transakcja nadrzędna zostanie wycofana, jest prawie na pewno błędem. To nie jest dobre wykorzystanie autonomicznej transakcji.
Co się stanie, na przykład, jeśli zaktualizuję wiersz w t1
ale moja transakcja się cofa. t2
zmiany zostały już wprowadzone i zatwierdzone, więc nie zostaną wycofane. Ogólnie oznacza to, że t2
dane są teraz nieprawidłowe. Celem transakcji jest zapewnienie, że zestaw zmian jest niepodzielny i jest albo całkowicie udany, albo całkowicie cofnięty. Dopuszczenie częściowego sukcesu kodu prawie nigdy nie jest dobrym pomysłem.
Ciężko mi zobaczyć, co można tutaj kupić za pomocą autonomicznej transakcji. Często zobaczysz, że ludzie niewłaściwie używają transakcji autonomicznych, aby niepoprawnie obejść błędy mutacji wyzwalaczy. Ale opublikowany przez Ciebie kod nie wygeneruje błędu wyzwalacza zmutowanego, chyba że w t2
występuje wyzwalacz na poziomie wiersza który również próbował zaktualizować t1
lub jakiś podobny mechanizm, który wprowadzał tabelę mutacji. Jeśli jednak tak jest, użycie transakcji autonomicznej jest generalnie jeszcze gorsze, ponieważ transakcja autonomiczna nie widzi zmian dokonywanych w transakcji nadrzędnej, co prawie na pewno powoduje, że kod zachowuje się inaczej niż byś chciał.