из одиночных полей (table1_field1, table1_field2, ... table1_fieldN)
2) имеет один составной уникальный индекс из N полей (table2_field1_field2...fieldN)
добавляется\обновляется запись и соответсвенно вываливается ошибка Duplicate entry 'бла-бла-бла' for key 'бла_бла_бла'
всё какбэ хорошо, но:
- в случае (1) укажет на первое дублирующее значение ключа, например, table1_field2, а то что table1_field3 тоже дублируется не скажет, пока ещё раз с новым field2 не отправим запрос
- в случае (2) скажет, что дублируется значение ключа table2_field1_field2...fieldN и тут непонятно где именно ошибка
Проблема собственно в том, что пользователю то надо точно сказать какие из полей дублируются, чтобы он не гадал где чё менять.
для (1) перед (или после?) INSERT\UPDATE делать N COUNT запросов по каждому уникальному ключу и смотреть где COUNT > 0
а вот как быть со (2) случаем я не догоняю. Выбирать все записи и чекать в цикле? А если их овердохуя?
Нифига ты написал
или сделать один select, в котором ты узнаешь, есть ли такие поля
и еще 1) будет проверять уникальность в каждом столбце по отдельности, а 2) будет проверять уникальность во всех стольцах одновременно
Обсуждают сегодня