Массовая вставка MySQL (игнорирование идентификатора первичного ключа, но при дублировании обновления другого ключа)

Как при массовой вставке игнорировать повторяющееся обновление ключа для первичного ключа «id», обновляя только запись для другого ключа «another_unique_id»?

INSERT INTO
  some_table (`id`, `another_unique_id`, `raw_data)
  VALUES     (5   ,  'ABCDEFG', 'blah')
ON DUPLICATE KEY UPDATE ...?

Например, если есть запись с идентификатором: 5, я не хочу ее обновлять. Я просто вставлю новую запись.

Если в поле «another_unique_id» есть запись с «ABCDEFG», я бы хотел обновить эту запись на «blah».


person tttt    schedule 23.08.2011    source источник


Ответы (2)


я думаю тебе стоит пройти

INSERT INTO
some_table (`id`, `another_unique_id`, `raw_data)
VALUES     (NULL   ,  'ABCDEFG', 'blah')
ON DUPLICATE KEY UPDATE ...?

иначе это не имеет смысла

person Andrej Ludinovskov    schedule 23.08.2011

По крайней мере, на mysql вы можете использовать:

INSERT IGNORE INTO
some_table (`id`, `another_unique_id`, `raw_data`)
VALUES     (5 ,  'ABCDEFG', 'blah')

Если поле с идентификатором 5 существует, оно будет выполнять то же самое, что и обновление, а если оно не существует, оно будет выполнять то же самое, что и обычная вставка.

person Natxo    schedule 07.11.2011
comment
ОП сказал, что если идентификатор 5 уже существует, он хочет INSERT, а не UPDATE. Я думаю, вы предлагаете обратное. - person Pondlife; 07.11.2012