Я хочу иметь возможность предотвратить дублирование строк текстового поля SQL. То есть, если строка 1 имеет поле имени, которое уже определено как «Джон Смит», я не хочу, чтобы он мог добавить еще один «Джон Смит» (как это обычно бывает в этом названии).
Я попытался проверить, существовал ли он во время вставки, но проблема в том, что если вы одновременно открываете два окна браузера и одновременно нажимаете кнопку «Отправить», они оба будут проверять, чек будет очищен, а затем они оба встанут если он достаточно близко друг к другу.
О, и это на PHP-сайте.
Благодаря!
CREATE UNIQUE INDEX idxname ON tablename (fieldname);
Добавление этого индекса гарантирует, что никакие повторяющиеся записи для поля fieldname
не будут записаны в таблицу таблиц.
Вы получите ошибку MySQL со вторым клиентом. Вы должны обработать это в своем PHP-коде и снова разместить форму (вместо того, чтобы просто отображать сообщение об ошибке).
Другая возможность (для более сложных ситуаций) – это функция LOCK
. Если вы заблокируете таблицу перед проверкой, а затем вставьте свою запись, параллельная операция (во втором окне браузера) будет отложена до тех пор, пока вы не отпустите блокировки. Затем запись будет сохранена, поэтому второй скрипт PHP увидит ее и обработает синтаксис.
DISTINCT
также может использоваться для выбора уникальных строк.
... select distinct * from table1 ...
Взгляните сюда , вам понадобится уникальная.