sql >> Databasteknik >  >> RDS >> Oracle

Så hur skiljer sig `ROLLBACK` i Oracle-undantagshanteraren från min `ROLLBACK`?

Så här fungerar Oracle. Din första INSERT gjordes korrekt (dvs infogade "1" i en tabell).

Sedan körde du ett anonymt PL/SQL-block som infogar "3", sedan "2", och misslyckas när du försöker infoga "1" på grund av primärnyckelöverträdelse.

Om ett obehandlat undantag inträffar under exekvering av det PL/SQL-blocket (vilket är vad du säger att "Oracle-undantagshanteraren återställer hit"), rullar Oracle tillbaka till början av PL/SQL-blocket.

När du använder EXCEPTION-hanteraren och utfärdar ROLLBACK, då är det DU som bestämmer vad du ska göra om något händer, och det är att återställa alla ändringar till tidigare COMMIT som var en implicit genomförd COMMIT efter att ha kört CREATE TABLE-satsen, så efter INSERT "1 " rullas också tillbaka.



  1. Jasper Report:kan inte få värde för fältet 'x' i klassen 'org.postgresql.util.PGmoney'

  2. ORA-01799:en kolumn får inte vara yttre sammanfogad med en underfråga

  3. Hur man får Mysql rownum kontinuerligt över pagenationen

  4. Hur man fixar fel med främmande nyckel när man kör migrering