2013-04-08 3 views
0

у меня есть структура таблицы, как этотMySQL несколько уникальных ключей с на дубликате ключа справки

id,f1,f2,f3,f4 

идентификатор является первичным ключом, f1 и f3 являются уникальными ключами

моего вопрос, когда я использую ON DUPLICATE KEY UPDATE

Какой ключ он рассматривает для оценки

рассмотрим такой запрос

INSERT INTO t1 (f1,f2,f4) VALUES (.....) ON DUPLICATE KEY UPDATE f4=...." 

Как показано выше, будет ли он считаться ключом f1? или f3 или идентификатор

и если у меня есть запрос, как этот

INSERT INTO t1 (f1,f2,f3,f4) VALUES (.....) ON DUPLICATE KEY UPDATE f4=...." 

какой ключ он будет рассматривать то?

Спасибо, ребята :)

ответ

1

Из MySQL manual, курсив:

Если вы указываете ON KEY UPDATE DUPLICATE, и строка вставленные что приведет повторяющееся значение в уникальный индекс или PRIMARY KEY, a Выполняется ОБНОВЛЕНИЕ старой строки.

Вставка попытки, которая приведет к дублированию для любого уникального ограничения на таблицу, приведет к срабатыванию альтернативного действия. Обратите внимание, что рекомендуется (в целом) не использовать KEY синтаксиса дублирования с таблицами, которые содержат несколько уникальных индексы:

В общем, вы должны стараться избегать использования KEY положения ON DUPLICATE UPDATE на столах с несколько уникальных индексов.

+0

любой шанс приоритета? – Anup

+0

Ну любое нарушение вызовет альтернативное действие, поэтому приоритет не будет иметь большого значения. Тем не менее, прямой ответ - афаик, нет. – Perception

+1

У вас есть предложение, что делать, если таблица имеет несколько уникальных индексов, и вы хотели бы использовать ON DUPLICATE KEY UPDATE (только на одном из ключей)? – theyuv

Смежные вопросы