При дублировании ключа игнорировать?

Ребята, я пытаюсь закончить этот запрос → в моем поле тега установлено значение UNIQUE, и я просто хочу, чтобы база данных игнорировала любой повторяющийся тег.

INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c')
ON DUPLICATE KEY IGNORE '*the offending tag and carry on*'

или даже это было бы приемлемо

INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c')
ON DUPLICATE KEY UPDATE '*the offending tag and carry on*'

Ответ 1

Предположите НЕ использовать INSERT IGNORE, поскольку он игнорирует ВСЕ ошибки (т.е. его неаккуратное глобальное игнорирование). Вместо этого, поскольку в вашем примере tag есть уникальный ключ, используйте:

INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c') ON DUPLICATE KEY UPDATE tag=tag;

на дублированном ключе производит:

Запрос ОК, 0 строк затронуты (0,07 сек)

Ответ 2

Mysql имеет эту UPDATE INTO;

edit Похоже, они переименовали его в REPLACE

REPLACE работает точно так же, как INSERT, за исключением того, что если старая строка в таблице имеет такое же значение, как новая строка для ПЕРВИЧНЫЙ КЛЮЧ или УНИКАЛЬНЫЙ индекс, старая строка удаляется перед новой строкой вставляется