Каковы практические различия между `REPLACE` и` INSERT… ON DUPLICATE KEY UPDATE` в MySQL?
Что мне нужно, это установить значения всех полей записи с определенным ключом (на самом деле ключ составной), вставляя запись, если еще нет записи с таким ключом.
REPLACE
кажется, что предназначено для выполнения работы, но в то же время его страница руководства предлагаетINSERT ... ON DUPLICATE KEY UPDATE
.
Какой из них мне лучше выбрать и почему?
Единственный «побочный эффект»REPLACE
мне приходит в голову, что это будет увеличивать значения автоинкремента (к счастью, я не использую их), покаINSERT ... ON DUPLICATE KEY UPDATE
вероятно, не будет. Какие еще практические различия следует учитывать? В каких конкретных случаях можноREPLACE
быть предпочтительнееINSERT ... ON DUPLICATE KEY UPDATE
и наоборот?