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

Вмъкване на записи родител/дете в транзакция

Дъщерните вмъквания ще видят всеки родител, който или е бил ангажиран, или е бил вмъкнат преди това от същата транзакция (независимо дали е ангажиран или не).

Едно нещо, което трябва да проверите, е дали вмъкването на родителя автоматично извлича стойността на първичния ключ (напр. чрез тригер).

Това означава, че издавате израза INSERT в стойности на Contracts (contract_sequence_number, ...) (10437, ...);

но тригерът определя нов contract_sequence_number от последователността и всъщност му дава първичния ключ 10438 (или какъвто и да е).

Друг проблем може да бъде всеки ORM слой, който заличава проблема, като не издава вмъкванията в правилния ред или използва различни връзки извън пул за една „транзакция“.

Също така проверете вмъкването на родителя, който не е върнал грешка.

Опитайте да направите примерна транзакция чрез конвенционален клиент (като SQL*Plus) и вижте дали това работи. Ако дъщерното вмъкване не успее там, просто потърсете обратно най-новия запис от договора (напр. където contract_sequence_number> 10400) и вижте дали вмъкването е успешно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ограждането на имена на колони в двойни кавички с команда CREATE в Oracle не работи правилно. Защо?

  2. Oracle същото име на таблица на различна схема?

  3. Oracle SQL заявка за изброяване на всички схеми в DB

  4. Извлечете Oracle LONG до низ във VBA

  5. Как да форматирам колона NUMBER в Oracle?