SQL для ограничения количества дочерних строк - PullRequest
0 голосов
/ 03 мая 2020

Возможно, не очень хорошая сюжетная линия, но, надеюсь, кто-то может помочь.

Я пишу небольшое приложение с использованием MariaDB. Это создание веб-страницы бронирования автобуса для небольшой организации. Каждый «АВТОМОБИЛЬ» может иметь произвольное количество мест (это значение столбца в таблице). Я хочу, чтобы можно было безопасно добавлять ПАССАЖИРОВ, не превышая количество мест в АВТОМОБИЛЕ.

Другими словами, в приложении может быть 2 пользователя, которые пытаются зарегистрироваться на последнее место в автомобиле на в то же время. Я надеюсь, что есть какой-нибудь умный SQL, который вызовет сбой второго. Я полагаю, что я мог бы сделать это в коде приложения, но это действительно грязно (добавить, проверить, удалить ошибочную строку) и затрудняет отправку сообщения об ошибке нужному пользователю.

Я видел одно решение, которое добавит номер SEAT для каждого места в автомобиле, а затем потребует, чтобы (CAR, SEAT) был уникальным. Однако это означает, что код пытается захватить определенное c место («зарегистрировать пассажира на АВТОМОБИЛЕ 1, МЕСТО 3»). Технически это работает, но создает проблему: почему не хватает места 3, когда место 4 доступно; Пользователь не заботится.

Любые предложения по триггерам, ограничения будут оценены. Я также мог бы использовать хранимую процедуру, но мне понадобятся INSERT и UPDATE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...