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

Oracle - In che modo Oracle gestisce le istruzioni DML specifiche della transazione

Oracle crea un indice per imporre il vincolo della chiave primaria (un indice univoco per impostazione predefinita). Quando la sessione A inserisce la prima riga, la struttura dell'indice viene aggiornata ma la modifica non viene salvata. Quando la sessione B tenta di inserire la seconda riga, l'operazione di manutenzione dell'indice rileva che è già presente una voce in sospeso nell'indice con quella chiave particolare. La sessione B non può acquisire il latch che protegge la struttura dell'indice condiviso, quindi si bloccherà fino al completamento della transazione della sessione A. A quel punto, la sessione B sarà in grado di acquisire il latch e apportare le proprie modifiche all'indice (perché A ha eseguito il rollback) oppure noterà che l'altra voce è stata commessa e genererà una violazione del vincolo univoco (perché A ha commesso ).