Самый элегантный способ борьбы с дублирующимися записями

#php #mysql

#php #mysql

Вопрос:

Я работаю над решением для предотвращения дублирования записей в базе данных, которые могут возникнуть в результате моей конфигурации.

Я планирую создать md5-хэш некоторых значений и проверить таблицу, чтобы увидеть, существует ли этот хэш.

Это более эффективно достигается с помощью таблицы mysql или чего-то вроде текстового файла на сервере?

Может кто-нибудь предложить более элегантное решение?

Я ценю любую помощь.

Комментарии:

1. что вы храните в базе данных? какие записи?

2. Если вы используете движок InnoDB, проверьте внешние ключи и индексы полей.

Ответ №1:

Вы можете создать УНИКАЛЬНЫЙ ИНДЕКС и добавить к нему набор столбцов, значения в которых вы не хотите дублировать. Затем база данных вернет вам сообщение об ошибке при каждой транзакции, которая пытается дублировать эти данные. Проверьте это: Создайте индекс по ссылке MySQL

Комментарии:

1. Я делал это сегодня с некоторыми абсолютно ужасными данными из архаичной базы данных MS SQL. Это очень весело…

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