Considera come ciò avviene nella realtà: a tutti gli utenti vengono mostrati i posti disponibili, facendo clic su uno (presumo che tu abbia una GUI di qualche descrizione, ovviamente) implica l'intenzione di acquistare e viene quindi contrassegnato come riservato (fino all'acquisto è completare o un timer scade / sessione termina, ecc.)
I tuoi posti hanno (nei miei occhi) 3 stati: disponibile, riservato e acquistato.
-
I posti disponibili possono essere prenotati dagli utenti.
-
I posti riservati vengono aggiunti a un ordine e possono essere acquistati.
-
I posti acquistati non sono disponibili per la prenotazione.
Facendo clic su un posto disponibile lo contrassegna come riservato, questo non può più essere selezionato da altri utenti. Prenotando i posti li aggiungi a un ordine che, una volta pagato, contrassegna i posti prenotati come acquistati, che ora vengono visualizzati come non disponibili.
Nel tuo scenario di due utenti che desiderano prenotare gli ultimi posti, sarà (proprio come nella realtà) essere un primo arrivato, primo servito. Il primo utente a prenotare il posto, e quindi acquistarlo, ottenere il biglietto.
Avrai bisogno di ulteriori considerazioni su come impedire che i posti siano riservati in modo permanente e non siano mai stati acquistati (come menzionato sopra) ecc.
Se hai un front end web, potresti prendere in considerazione la possibilità di effettuare queste chiamate Ajax per mostrare un aggiornamento in tempo reale dei posti prenotati.