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

Czy wyzwalacz wstawiania wymaga instrukcji commit?

Nie tylko wyzwalacze nie potrzebują polecenia COMMIT, w którym nie można go umieścić:wyzwalacz nie skompiluje się, jeśli kod treści zawiera polecenie COMMIT (lub wycofanie).

Dzieje się tak, ponieważ wyzwalacze uruchamiają się podczas transakcji. Po uruchomieniu wyzwalacza bieżąca transakcja nadal nie jest zakończona. Ponieważ COMMIT kończy transakcję, pozwalając im na uruchomienie wyzwalaczy, złamałoby jednostkę pracy.

Tak więc zmiany wykonane w wyzwalaczu są zatwierdzane (lub wycofywane) przez transakcję będącą właścicielem, która wydała DML, który uruchomił wyzwalacz.

Prawdą jest, że wyzwalacze mogą działać pod PRAGMA AUTONOMOUS_TRANSACTION, w takim przypadku muszą mieć COMMIT. Ale jest to skrajny przypadek, ponieważ istnieje niewiele sensownych zastosowań zagnieżdżonych transakcji w Oracle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Znajdź duplikat z kilkoma polami (bez unikalnego identyfikatora) OBEJŚCIE

  2. Spojrzenie na Oracle Group-by Bug

  3. Podczas instalacji formularza Oracle wystąpił błąd. Nie można uruchomić instalatora (555)

  4. Okrągła data do 10 minut interwału

  5. Automatycznie wypełnij datę w tabeli Oracle