Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como evitar a condição de corrida na reserva de hotéis online


Uma solução é adicionar duas colunas a uma tabela no banco de dados. Uma coluna é a ID da sessão ou a ID do usuário ou qualquer outra do usuário que está recebendo a oferta da sala. A segunda coluna é um carimbo de data/hora indicando quando essa oferta expirará.

Em seguida, no seu aplicativo, mostre apenas salas que tenham um carimbo de data/hora expirado na coluna de espera. (Defina o carimbo de data/hora inicial como 0 para que comece expirado.) Quando um quarto for selecionado, verifique a coluna novamente. Se houver um carimbo de data/hora não expirado, o usuário receberá uma mensagem "desculpe, você estava muito lento". Caso contrário, coloque um carimbo de data/hora lá por 15 minutos no futuro ou qualquer outra coisa e prossiga.

Você vê muito isso em sites de viagens e sites de compra de passagens, onde diz algo como "Estamos segurando esses assentos para você por mais 14 minutos. Por favor, complete a transação até lá ou ela será liberada blá blá blá".