В MYSQL, в каких сценариях я должен использовать REPLACE, а в каких - UPDATE - PullRequest
0 голосов
/ 09 февраля 2012

В MySQL, в каких случаях я должен использовать REPLACE, а в каких я должен использовать UPDATE. Добавим к этому в качестве бонуса, в каких случаях я должен использовать комбинацию DELETE, а затем INSERT по сравнению с ранее упомянутыми 2.

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

С документация :

REPLACE - это расширение MySQL к стандарту SQL. Он либо вставляет, или удаляет и вставляет. Для другого расширения MySQL к стандарту SQL - который либо вставляет, либо обновляет - см. Раздел 12.2.5.3, «INSERT ... Синтаксис ON DUPLICATE KEY UPDATE ”.

Лучше не пытаться писать переносимый SQL, тогда.

Обратите внимание: если таблица не имеет индекса PRIMARY KEY или UNIQUE, используйте REPLACE утверждение не имеет смысла. оно становится эквивалентным INSERT, потому что нет никакого индекса, который будет использоваться, чтобы определить, является ли новая строка дублирует другой.

Так что есть еще один случай, когда вы не должны его использовать.

Чтобы использовать REPLACE, у вас должны быть как INSERT, так и DELETE привилегии для таблицы.

Это не то же самое, что иметь права UPDATE.

В комментариях также есть куча рекомендаций и предостережений.

Почему никто больше не читает документацию? Достаточно сложно постоянно обновлять его, когда вы знаете, что люди делают его используют.

1 голос
/ 09 февраля 2012

Вы используете REPLACE, когда вы не уверены, существует ли запись в вашей базе данных или если вы не хотите проверять, существует ли она. В основном, что произойдет, если запись существует, она будет удалена и вставлена, если ее нет, она будет вставлена. Это в основном для удобства, но не ANSI SQL.

Обычно для производительности лучше выполнить ОБНОВЛЕНИЕ против УДАЛЕНИЯ / ВСТАВКИ. Поэтому обычно не рекомендуется использовать REPLACE.

Ваше предпочтение всегда должно быть

1. UPDATE
2. DELETE/INSERT (REPLACE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...