Dato che entrambe le transazioni raggiungono il DBMS simultaneamente, il meccanismo di controllo della concorrenza del database garantirebbe isolamento delle transazioni, in effetti scegliendo una transazione per precedere l'altra . Dato il vincolo univoco del nome utente, il secondo verrebbe rifiutato.
UPDATE:
In effetti, evitando / affrontando la concorrenza viene fatto al livello più basso, nemmeno a livello di DBMS, ma a livello di CPU. Il puntatore di istruzioni è esattamente questo: punta a una singola istruzione. Anche se i blocchi di istruzioni (e quindi, effettivamente, le transazioni di database "concorrenti") sono intercalati al momento dell'esecuzione, uno precede sempre l'altro o è impegnato per primo, causando il rollback forzato dell'altro. Per completezza:
Concurrent Transaction Processing
When two transactions are being
processed against a database at the same time, they are termed
concurrent transactions. Although it may appear to the users that
concurrent transactions are being processed simultaneously, this
cannot be true because the CPU of the machine processing the database
can execute only one instruction at a time. Usually, transactions are
interleaved, which means that the operating system switches CPU
services among tasks so that some portion of each transaction is
carried out in a given interval. This switching among tasks is done so
quickly that two people seated at browsers side by side, processing
the same database, may believe that their two transactions are
completed simultaneously; in reality, however, the two transactions
are interleaved.
Kroenke & Auer, Database Processing Fundamentals: Design, Implementation (12th Ed.), Part 4 Multiuser Database Processing, p.342