sql >> Database teknologi >  >> RDS >> Oracle

Så hvordan er 'ROLLBACK' i Oracle-undtagelseshandler forskellig fra min 'ROLLBACK'?

Sådan fungerer Oracle. Din første INSERT blev udført korrekt (dvs. indsat "1" i en tabel).

Derefter kørte du en anonym PL/SQL-blok, som indsætter "3", derefter "2", og fejler, når du forsøger at indsætte "1" på grund af primærnøgleovertrædelse.

Hvis der opstår en ubehandlet undtagelse under udførelse af den pågældende PL/SQL-blok (hvilket er, hvad du siger, at "Oracle-undtagelseshandler rollbacks hertil"), ruller Oracle tilbage til begyndelsen af ​​PL/SQL-blokken.

Når du bruger EXCEPTION handler og udsteder ROLLBACK, så er det DIG, der bestemmer, hvad du skal gøre, hvis der sker noget, og det er at gendanne alle ændringer til tidligere COMMIT, som var en implicit udført COMMIT efter at have udført CREATE TABLE-sætningen, så følg INSERT "1 " er også rullet tilbage.



  1. Hvordan løser jeg SQL71561-fejl ved hjælp af SSDT, når jeg har en visning, der refererer til objekter i en anden database?

  2. Forskellen mellem sys.views, sys.system_views og sys.all_views i SQL Server

  3. Python Pandas skriver til sql med NaN-værdier

  4. Hvordan kombinerer man to MySQL-kolonner til én kolonne?