Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Korzystanie z transakcji zagnieżdżonych w Oracle

Oracle nie obsługuje transakcji zagnieżdżonych. Jeśli transakcja zostanie zatwierdzona, zostanie zatwierdzona. Dlatego generalnie nie chcesz zatwierdzać (lub wycofywać) transakcji w procedurze składowanej, co utrudnia ponowne użycie procedury w innym miejscu, jeśli semantyka transakcji jest inna.

Możesz jednak zadeklarować punkt zapisu na początku procedury i wycofać się do tego punktu zapisu w przypadku błędu. Jeśli następnie usuniesz zatwierdzenie, transakcja jest kontrolowana wyłącznie przez kod aplikacji, a nie przez kod bazy danych

begin
  savepoint beginning_of_proc;

  insert/update/delete...

exception 
  when OTHERS then 
    rollback to beginning_of_proc;
    raise;
end;

Jednak w tym przypadku moim nastawieniem byłoby nie mieć punktu zapisu w kodzie, nie mieć wycofywania i nie przechwytywać wyjątku, chyba że robisz z nim coś użytecznego. Po prostu wykonaj DML, pozwól wyrzucić wszelkie wyjątki i obsługuj je w swojej aplikacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstaw wiele rekordów w Oracle

  2. Uzyskiwanie dostępu do tabeli innego użytkownika w ramach procedury składowanej Oracle

  3. Powiązanie parametrów z Oracle Dynamic SQL

  4. Wstaw zbiorczy do bazy danych Oracle:Co jest lepsze:pętla FOR Cursor czy prosty Select?

  5. Jak używać funkcji NVL() w Oracle