sql >> Database >  >> RDS >> Oracle

Oracle - Hoe beheert Oracle transactiespecifieke DML-statements?

Oracle maakt een index om de primaire sleutelbeperking af te dwingen (standaard een unieke index). Wanneer Sessie A de eerste rij invoegt, wordt de indexstructuur bijgewerkt, maar wordt de wijziging niet vastgelegd. Wanneer Sessie B de tweede rij probeert in te voegen, merkt de indexonderhoudsbewerking op dat er al een item in behandeling is in de index met die specifieke sleutel. Sessie B kan de vergrendeling die de gedeelde indexstructuur beschermt niet verkrijgen, dus deze wordt geblokkeerd totdat de transactie van sessie A is voltooid. Op dat moment kan Sessie B ofwel de vergrendeling verkrijgen en zijn eigen wijziging in de index aanbrengen (omdat A is teruggedraaid) of het zal opmerken dat de andere invoer is gepleegd en een unieke beperkingsschending zal veroorzaken (omdat A heeft begaan ).



  1. Mysql-tabelnaam werkt niet in hoofdletters

  2. Zet decimale tijd om in uren en minuten

  3. EF6 met MySQL. De opgegeven sleutel was niet aanwezig in het woordenboek

  4. kopieer een kolom van de ene tabel naar de andere