Oracle
 sql >> база данни >  >> RDS >> Oracle

И така, как се различава `ROLLBACK` в манипулатора на изключения на Oracle от моето `ROLLBACK`?

Ето как работи Oracle. Вашето първо INSERT беше направено правилно (т.е. вмъкна "1" в таблица).

След това изпълнихте анонимен PL/SQL блок, който вмъква „3“, след това „2“ и се проваля при опит за вмъкване на „1“ поради нарушение на първичния ключ.

Ако възникне необработено изключение по време на изпълнението на този PL/SQL блок (което е това, което казвате, че „Манипулаторът за обработка на изключения на Oracle се връща назад тук“), Oracle се връща обратно към началото на PL/SQL блока.

Когато използвате манипулатора на EXCEPTION и издадете ROLLBACK, тогава ВИЕ решавате какво да направите, ако нещо се случи, и това е да върнете всички промени към предишния COMMIT, който беше имплицитно извършен COMMIT след изпълнение на оператора CREATE TABLE, така че следвайки INSERT "1 " също се връща назад.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да принудим Pascal case с поддръжката на Entity Framework на Oracle?

  2. OC4J 10.1.3.3 не може да намери ojms.rar настройване на устойчивост на база данни

  3. REGEXP Подниз Oracle

  4. Конвертиране на скрипт Coldfusion в изглед на Oracle с CASE и итерация

  5. ORA-24247:достъпът до мрежата е отказан от списъка за контрол на достъпа (ACL) при изпращане на имейл оракул