Альтернатива ON DUPLICATE KEY UPDATE
позволяет передать решение об обновлении и вставке в базу данных:
INSERT INTO table (userid, name) VALUES (2, 'Bobby');
ON DUPLICATE KEY UPDATE name = 'Bobby';
изменит поле имени на «Бобби», если запись с идентификатором пользователя 2 уже существует.
Вы можете использовать его как альтернативу INSERT IGNORE
, если вы предоставляете ОБНОВЛЕНИЕ неэффективной операции:
INSERT INTO table (userid, name) VALUES (2, 'Bobby');
ON DUPLICATE KEY UPDATE name = name;
Это ничего не даст, если ID пользователя 2 уже существует, что позволяет избежать предупреждения и проглатывания других ошибок, которые вы получите при использовании INSERT IGNORE
.
Другой альтернативой будет REPLACE
:
REPLACE INTO table (userid, name) VALUES (2, 'Bobby');
Это сделает обычную вставку, если идентификатор пользователя 2 еще не существует. Если он существует, он сначала удалит старую запись, а затем вставит новую.
Помните, что обе версии являются специфическими расширениями MySQL для SQL.