Моя проблема такова:
У меня есть автодилер A и таблица db с именем sold_cars
. Когда автомобиль продается, я создаю запись в этой таблице.
Таблица имеет целочисленный столбец с именем order_no
. Он должен быть уникальным в автомобилях, продаваемых дилером.
Итак, если дилер A продал автомобили a, b and c
, то этот столбец должен быть 1, 2, 3
. Я должен использовать этот столбец, а не первичный ключ, потому что я не хочу иметь никаких отверстий в моей нумерации - дилер A и B (который может быть добавлен позже) должен иметь порядковые номера 1, 2, 3, а не A: 1, 3, 5 и B: 2, 4, 6. Итак... Я выбираю последний наибольший order_no для данного дилера, увеличиваю его на 1 и сохраняю.
Проблема в том, что два человека купили автомобиль у дилера A в том же миллисекунде, и оба заказа получили тот же order_no. Любой совет? Я думал закрыть этот процесс в блоке транзакций и заблокировать эту таблицу до завершения транзакции, но не могу найти информацию о том, как с этим.