sql >> Database >  >> RDS >> Oracle

Ouder-/kindgegevens invoegen in een transactie

De onderliggende invoegingen zouden elke ouder zien die ofwel is vastgelegd of eerder is ingevoegd door dezelfde transactie (al dan niet vastgelegd).

Een ding om te verifiëren is of het invoegen van de ouder automatisch de waarde van de primaire sleutel afleidt (bijvoorbeeld via een trigger).

Dat wil zeggen, u geeft de statementINSERT in Contracts (contract_sequence_number, ...) waarden (10437, ...);

maar een trigger bepaalt een nieuw contract_sequence_number uit de reeks en geeft het feitelijk de primaire sleutel 10438 (of wat dan ook).

Een ander probleem kan een ORM-laag zijn die het probleem verpest door de inserts niet in de juiste volgorde uit te geven of verschillende verbindingen uit een pool te gebruiken voor een enkele 'transactie'.

Controleer ook of de invoeging van de ouder geen fout heeft geretourneerd.

Probeer een voorbeeldtransactie uit te voeren via een conventionele client (zoals SQL*Plus) en kijk of dat werkt. Als het invoegen van een kind daar mislukt, vraag dan gewoon de meest recente invoer van het contract op (bijv. waar contract_sequence_number> 10400) en kijk of het invoegen is gelukt.



  1. Hoe maak ik nog een MySQL auto-increment kolom?

  2. Is een aanroep van PDOStatement::closeCursor() nodig als het instructieobject nog niet is ingesteld?

  3. MySQL DATETIME DIFF-query

  4. PHP PDO retourneert inconsistente resultaten voor SELECT FOUND_ROWS()