Подтвердить что ты не робот

MySQL: ALTER IGNORE TABLE ADD UNIQUE, что будет усечено?

У меня есть таблица с 4 столбцами: идентификатор, тип, владелец, описание. ID - AUTO_INCREMENT PRIMARY KEY, и теперь я хочу:

ALTER IGNORE TABLE `my_table`
    ADD UNIQUE (`type`, `owner`);

Конечно, у меня мало записей с типом = 'Apple' и owner = 'Apple CO'. Итак, мой вопрос заключается в том, какая запись будет специальной, которая останется после этого ALTER TABLE, с наименьшим идентификатором или, возможно, с самой большой, как последняя вставленная?

4b9b3361

Ответ 1

Первая запись будет сохранена, остальные будут удалены & sect; & sect;:

IGNORE - расширение MySQL для стандартный SQL. Он контролирует, как ALTER TABLE работает, если есть дубликаты уникальные ключи в новой таблице или если предупреждения возникают, когда строгий режим включен. Если IGNORE не указано, копия отменяется и откатывается, если происходят ошибки с дублирующимся ключом. Если IGNORE, только строка перваяиспользуются строки с дубликатами на уникальный ключ, другие конфликтующие строки удален. Неверные значения усечено до ближайшего соответствия приемлемое значение

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

Также обратите внимание:

Начиная с MySQL 5.7.4, предложение IGNORE для ALTER TABLE удалено, и его использование вызывает ошибку.