sql >> Base de Datos >  >> RDS >> Mysql

Cómo prevenir la condición de carrera en la reserva de hotel en línea

Una solución es agregar dos columnas a una tabla en la base de datos. Una columna es el ID de sesión o el ID de usuario o lo que sea del usuario al que se le ofrece la sala. La segunda columna es una marca de tiempo que indica cuándo expirará esa oferta.

Luego, en su aplicación, solo muestre las salas que tengan una marca de tiempo vencida en la columna de espera. (Establezca la marca de tiempo inicial en 0 para que comience a caducar). Cuando se seleccione una habitación, vuelva a comprobar la columna. Si hay una marca de tiempo no vencida allí, el usuario recibe un mensaje de "lo siento, fuiste demasiado lento". De lo contrario, coloque una marca de tiempo allí para 15 minutos en el futuro o lo que sea, y continúe.

Esto se ve mucho en los sitios de viajes y en los sitios de compra de boletos donde dice algo como "Reservaremos estos asientos para usted por otros 14 minutos. Complete la transacción para entonces o se liberará, bla, bla, bla".