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.