Как обеспечить уникальность значения в таблице MySQL DB с помощью PHP — вариант использования уникального ключа?

У меня есть сайт, связанный с базой данных. В одной из его таблиц один атрибут сущности, который не является первичным ключом, должен быть уникальным в этой таблице.

В настоящее время я запрашиваю базу данных перед тем, как вставить значение в этот столбец, чтобы проверить, существует ли это значение. Если это так, значение изменяется моим сценарием, и та же процедура запускается снова, пока не будет получен результат, что означает, что его еще нет в базе данных.

Хотя это работает, я чувствую, что это большой скачок производительности — даже если значение уникально, к базе данных нужно обращаться как минимум два раза: один раз для проверки & один раз для написания.

Улучшить производительность & чтобы сделать мой (возможно глючный / ненужный) код устаревшим, у меня есть идея пометить столбец как уникальный ключ & использовать блок try / catch для процесса записи / обработки ошибок. Таким образом, ядро ​​базы данных должно обрабатывать уникальность, которая кажется более разумной, чем моя процедура записи запроса.

Это хорошая идея или уникальные ключи не созданы для такого поведения? Каков типичный случай использования уникального ключа в базе данных SQL?

0

Решение

INSERT INTO table (uniquerow) VALUES(1) ON DUPLICATE KEY UPDATE uniquerow = 1;

С помощью этого оператора вы можете вставить, если он уникален, и обновить, если ключ уже существует.

С уникальными ограничениями вы можете проверять кортеж значений, чтобы они не появлялись несколько раз, не будучи первичным ключом.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]