За съжаление, използването само на MySQL това е невъзможно. Или поне на практика. Предпочитаният начин би бил използването на ограничения на SQL CHECK, те са в стандарта на SQL език. MySQL обаче не ги поддържа.
Вижте:https://dev.mysql.com/doc /refman/5.7/en/create-table.html
Изглежда, че PostgreSQL поддържа CHECK ограничения за таблици, но не съм сигурен доколко е жизнеспособно да превключите машината на базата данни или дали това дори си струва труда само да използвате тази функция.
В MySQL може да се използва тригер за решаване на този проблем, който ще провери за припокриващи се редове преди да се случи вмъкването/актуализацията и ще изведе грешка с помощта на SIGNAL
изявление. (Вижте:https://dev.mysql.com/doc/ refman/5.7/en/signal.html
) Въпреки това, за да използвате това решение, ще трябва да използвате актуална версия на MySQL.
Освен чистите SQL решения, това обикновено се прави в логиката на приложението, така че която и програма да осъществява достъп до базата данни MySQL обикновено проверява за този вид ограничения, като изисква всеки ред, който е нарушен от новия запис в SELECT COUNT(id) ...
изявление. Ако върнатият брой е по-голям от 0, това просто не се отразява на вмъкването/актуализацията.