sql >> Database teknologi >  >> RDS >> Oracle

Indsættelse af forældre-/barnjournaler i en transaktion

De underordnede indsættelser vil se enhver forælder, der enten er blevet forpligtet eller tidligere er blevet indsat af den samme transaktion (uanset om den er forpligtet eller ej).

En ting, der skal kontrolleres, er, om indsættelsen af ​​forælderen automatisk udleder den primære nøgleværdi (f.eks. gennem en trigger).

Det vil sige, du udsteder sætningen INSERT i kontrakter (contract_sequence_number, ...) værdier (10437, ...);

men en trigger bestemmer et nyt contract_sequence_number fra sekvensen og giver den faktisk den primære nøgle 10438 (eller hvad som helst).

Et andet problem kan være et hvilket som helst ORM-lag, der ødelægger problemet ved ikke at udstede indsatserne i den rigtige rækkefølge eller bruge forskellige forbindelser ud af en pulje til en enkelt 'transaktion'.

Kontroller også, at indsættelsen af ​​forælderen ikke returnerede en fejl.

Prøv at lave en prøvetransaktion gennem en konventionel klient (såsom SQL*Plus), og se om det virker. Hvis den underordnede indsættelse mislykkes der, skal du blot forespørge på den seneste post fra kontrakten (f.eks. hvor kontrakt_sekvensnummer> 10400) og se, om indsættelsen lykkedes.



  1. Påvirker RDS-proxy den aktuelle applikationssidepooling?

  2. Få alle indlæg, der har et specifikt tag, og behold alle andre tags på resultater med SQL

  3. Hvordan kan jeg videregive en række PDO-parametre, men alligevel angive deres typer?

  4. Sådan sender du flere variabler til PHP med jQuery