2014-01-13 5 views
0

Недавно я обнаружил функцию MYSQL REPLACE INTO, так что она получила мяч в сравнении с INSERT INTO, UPDATE. Когда я должен использовать REPLACE INTO над другими используемыми функциями? Когда это приемлемо использовать замены в течение обновления вREPLACE INTO vs Update

Стандартная процедура для моего текущего обновления будет:

  1. вход Проверка выхода пользователя из
  2. запрос к базе данных, что строки существуют
  3. Обновление строки

Стандартная процедура для моих вставок будет

  1. Проверка ввода пользователя существует
  2. Проверьте, если строка существует
  3. Если нет, то вставить
  4. Если нет, то возвращает ошибку

Так, в целом. REPLACE INTO vs UPDATE. Когда приемлемые, плюсы и минусы?

ответ

3

Заменить был разработан, чтобы облегчить следующий случай:

  1. Проверьте, если запись с таким же ПК существует
  2. Если да, то удалите строку и вставить новую строку для записи с данным одного
  3. Если нет, то вставить новую запись

согласно документации REPLACE эквивалентно вСТАВИТЬ, кроме удаления любой существующей записи, имеющей рк неоспоримым удалены раньше.

+0

# 2 не совсем корректно. Это не 'UPDATE', а' DELETE + INSERT' строка – zerkms

+0

Да, технически это сделает DELETE + INSERT. Я только хотел описать вариант использования. –

+0

что это такое? «Если да, обновите запись с указанным» утверждение неверно – zerkms

0

REPLACE INTO следует лучше всего рассматривать как условную вставку. Он будет смотреть на первичные/уникальные ключи для вставленной записи, и если один из этих уникальных ключей уже существует, он обновит значение для существующей записи, а не вставит. Это обновление выполняется путем удаления старой строки и вставки новых данных строки.

Так что, действительно, это означает, что вы избегаете проверки того, что определенный первичный/уникальный ключ уже существует, прежде чем пытаться вставить (что обычно приводит к ошибке).

+0

It не будет обновляться, но вместо этого удалите и вставьте. – zerkms

0

Если вы хотите дать пользователю сообщение об ошибке, когда что-то подобное произойдет, перейдите к методу 2, который вы описали! В противном случае, если это не имеет значения, если он уже существует в базе данных, и вы просто хотите заменить запись, используйте первый описанный вами метод!

+0

Методология просто для примера, в целом вопрос заключается в плюсах и минусах и приемлемом времени, когда использовать 'REPLACE INTO' –

+0

Я бы сказал,' REPLACE' является сокращением. В противном случае вам придется делать это, по крайней мере, с двумя запросами. Используйте его, когда вам это нужно. – rednaw

Смежные вопросы