Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Ist COMMIT nach jedem EXECUTE IMMEDIATE erforderlich?

Außer am Ende einer Geschäftstransaktion müssen Sie sich nur in folgenden Fällen wirklich verpflichten:

  1. Beim Ausführen von DDL:Die DDL-Ausführung wird in ein Paar impliziter Commits eingeschlossen.
  2. Nach Einfügung des direkten Pfads:Die Tabelle kann nicht gelesen werden, bis die Einfügung festgeschrieben ist.

Wie Horsey kommentiert, ist der richtige Zeitpunkt, an dem man sich binden muss, wenn die Geschäftstransaktion abgeschlossen ist. Andernfalls müssen Sie selbst Code schreiben, um teilweise abgeschlossene und festgeschriebene Transaktionen zu erkennen und zu beheben, die die Datenbank in einem logisch inkonsistenten Zustand verlassen haben (z. B. ein INVOICE-Datensatz existiert ohne INVOICE_DETAIL-Datensätze).