Използването на автономна транзакция за нещо различно от регистриране, което искате да бъде запазено, когато родителската транзакция се върне назад, почти сигурно е грешка. Това не е добро използване на автономна транзакция.
Какво се случва, например, ако актуализирам ред в t1
но транзакцията ми се връща назад. t2
промените вече са направени и ангажирани, така че да не се връщат назад. Това обикновено означава, че t2
данните вече са неправилни. Целият смисъл на транзакциите е да се гарантира, че набор от промени е атомарен и е или напълно успешен, или напълно върнат. Позволяването на кода да бъде частично успешен почти никога не е добра идея.
Трудно ми е да разбера какво ще ви купи използването на автономна транзакция. Често ще видите хора да използват неправилно автономни транзакции, за да заобиколят неправилно мутиращите грешки на тригера. Но кодът, който публикувахте, няма да генерира грешка на мутиращ тригер, освен ако не е имало тригер на ниво ред на t2
който също се опитваше да актуализира t1
или някакъв подобен механизъм, който въвеждаше мутираща таблица. Ако случаят е такъв обаче, използването на автономна транзакция обикновено е още по-лошо, защото автономната транзакция след това не може да види промените, направени в родителската транзакция, което почти сигурно кара кода да се държи различно, отколкото бихте желали.