Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wstawianie rekordów rodzica/dziecka w transakcji

Wstawki podrzędne zobaczą każdego rodzica, który został zatwierdzony lub został wcześniej wstawiony przez tę samą transakcję (niezależnie od tego, czy została zatwierdzona, czy nie).

Jedną rzeczą do zweryfikowania jest to, czy wstawienie elementu nadrzędnego automatycznie wyprowadza wartość klucza podstawowego (np. przez wyzwalacz).

Oznacza to, że wydajesz instrukcję INSERT w wartościach kontraktów (contract_sequence_number, ...) (10437, ...);

ale wyzwalacz określa nowy numer_sekwencji_kontraktu z sekwencji i faktycznie nadaje mu klucz główny 10438 (lub cokolwiek).

Innym problemem może być dowolna warstwa ORM, która zaciemnia problem, nie wysyłając wstawek we właściwej kolejności lub używając różnych połączeń z puli dla pojedynczej „transakcji”.

Sprawdź również, czy wstawka rodzica nie zwróciła błędu.

Spróbuj wykonać przykładową transakcję za pośrednictwem konwencjonalnego klienta (takiego jak SQL*Plus) i sprawdź, czy to działa. Jeśli wstawienie dziecka się nie powiedzie, po prostu zapytaj o ostatni wpis z kontraktu (np. gdzie numer_sekwencji_kontraktu> 10400) i sprawdź, czy wstawienie się powiodło.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Różnica między dwiema nieuporządkowanymi, wykreślonymi listami (Oracle)

  2. ORA-00936 brak wyrażenia

  3. Jaka jest alternatywa MySQL dla funkcji NEXT_DAY Oracle?

  4. Pobierz wyjątek SQLException java.sql.SQLException:ResultSet.next nie został wywołany

  5. Używanie funkcji agregacji do filtrowania rekordu na podstawie znacznika czasu MIN