MySQL PHP ВСТАВЛЯЕТ сбои из-за ограничения на уникальность данных

На вставке я ловлю ограничение на уникальность данных mysql_errno () 1062.

Это хорошо работает, но я хочу найти, что существующая строка восстанавливает или изменяет его.

Есть ли существует метод для получения идентификатора строки на сбое вставки? Я попробовал mysql_insert_id (), но понял, что это только возвратит строку, которую я вставляю (или отказавший для вставки) поэтому, я добираюсь 0.

Нет ли никакая опция, кроме как выпустить другой mysql_query и просто выполнить выбор на дублирующемся значении?

Я просто хочу удостовериться, что существует не лучше, более быстрый, более экономичный способ сделать это.

1
задан OMG Ponies 6 November 2010 в 02:46
поделиться

2 ответа

Если вы пытаетесь вставить новую строку или обновить существующие значения, то вам нужно REPLACE INTO . Также рассмотрите INSERT ... ON DUPLICATE KEY UPDATE Синтаксис , если есть ограничения, связанные, поскольку REPLACE INTO будет DELETE, а затем INSERT.

2
ответ дан 3 September 2019 в 00:53
поделиться

Вам нужно будет проверить таблицу на наличие «уникальных» ключей ( SHOW CREATE TABLE перечислит их все), а затем запросите таблицу связанных значений в запросе вставки, который вы пытались сделать. Итак, если вы вставляете поля A, B, C, D и B, C с уникальным ключом, тогда:

SELECT id, B, C FROM table WHERE B=$B and C=$C;
0
ответ дан 3 September 2019 в 00:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: