Oracle
 sql >> база данни >  >> RDS >> Oracle

прагма autonomous_transaction в тригер

Използването на автономна транзакция за нещо различно от регистриране, което искате да бъде запазено, когато родителската транзакция се върне назад, почти сигурно е грешка. Това не е добро използване на автономна транзакция.

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

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle DB Server + APEX + ORDS + JasperReports от нулата (част 1)

  2. Excel VBA се свързва с отдалечена Oracle DB с InstantClient

  3. Пуснете таблицата от базата данни на oracle, ако таблицата съществува в sql израза

  4. Как да намерите записи с рекурсивно припокриващи се диапазони от дати в Oracle DB

  5. Мигриране от java 1.4, EJB 1 към Java 6 и EJB 3