sql >> Databáze >  >> RDS >> Oracle

Jak se tedy `ROLLBACK` v obslužné rutině výjimek Oracle liší od mého `ROLLBACK`?

Takto funguje Oracle. Váš první INSERT byl proveden správně (tj. vložen „1“ do tabulky).

Potom jste spustili anonymní blok PL/SQL, který vloží „3“, poté „2“ a při pokusu o vložení „1“ selže kvůli porušení primárního klíče.

Pokud během provádění daného PL/SQL bloku dojde k neošetřené výjimce (což říkáte, že "Oracle se vrací zpět sem"), Oracle se vrátí zpět na začátek bloku PL/SQL.

Když použijete obslužný program EXCEPTION a vydáte ROLLBACK, pak jste to VY, kdo rozhoduje o tom, co dělat, pokud se něco stane, a to je vrátit všechny změny do předchozího COMMIT, což byl implicitně provedený COMMIT po provedení příkazu CREATE TABLE, takže po INSERT "1 " je také vráceno zpět.



  1. mysql LIKE s dvojitým procentem

  2. Vícenásobná sada a klauzule where v aktualizačním dotazu v mysql

  3. Jak odstranit 8 500 000 záznamů z jedné tabulky na serveru SQL

  4. Jak propojit Android s MySQL pomocí ovladače Mysql JDBC