Mysql вставить, если дублирующее значение на уникальный ключ, вставить другое значение

Можно ли при вставке строки с уникальным полем изменить значение, которое входит в уникальное поле, на что-то другое в случае дублирования?

Ситуация: пользователь добавляет новую статью, название которой не может повторяться. По какой-то причине пользователь вводит имя, которое уже существует в базе данных.

Если используется «ON DUPLICATE KEY UPDATE» — предыдущая запись (с тем же именем, что и вставленное) получает все новые данные в других полях (происходит обновление) — не хорошо.

Что требуется при вставке, если поле уникально и в БД есть совпадение, измените вставляемое значение на что-то вроде «[DUPLICATE] name».

Это покажет наличие дубликата, и пользователь просто изменит имя (которое, скорее всего, было вставлено как дубликат по ошибке).

0

Решение

Вы должны сделать что-то вроде (используя подготовленные операторы с MySQL) —

 SELECT name FROM table WHERE name=?

Привязать переменную (я предполагаю, $articleName) и сохраните результат, а затем проверьте соответствие mysqli_num_rows(),

Если существует одна или несколько строк, переименуйте название статьи.

 $articleName=$articleName."[DUPLICATE]";

Затем вставьте в БД.

Примечание: обычно не будет одинаковых названий статей, потому что предложение может быть составлено разными способами. Подумайте о создании очень умной программы для обнаружения этого или ручной проверки, как в SO.

1

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

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

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