Замена SQL В вопрос

С Заменой В, если у меня есть два поля. FirstName LastName. Таблица имеет John Smith в ней, если бы я должен был выполнить ЗАМЕНУ В tblNames (FirstName, LastName) ЗНАЧЕНИЯ (John, Jones), который заменил бы Smith Jones или создал бы новое имя?

Что определяет, вставляет ли Обновление или и?

7
задан Daniel Renshaw 30 April 2010 в 09:15
поделиться

3 ответа

REPLACE
INTO    tblNames (FirstName, LastName)
VALUES  ('John', 'Jones')

Если существует уникальное ограничение любого типа для FirstName , LastName или их комбинация, и она нарушается, записи удаляются и вставляются с новыми значениями.

Запись будет заменена, если выполнено любое из условий:

  • Имя равно УНИКАЛЬНО и в таблице есть Джон ,
  • Фамилия равно УНИКАЛЬНО и в таблице есть Джонс ,
  • Имя, Фамилия равно УНИКАЛЬНО и есть Джон Джонс в таблице.

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

В более новых версиях MySQL вы должны использовать INSERT… ON DUPLICATE KEY UPDATE .

8
ответ дан 7 December 2019 в 05:19
поделиться

Есть два разных оператора для вставки и обновления

update tblNames set FirstName="John", LastName="Smith" where FirstName="John" and LastName="Jones"

, это переименует Джона Джонса в Джона Смита

insert into tblNames (FirstName, LastName) values ("John", "Smith")

, это добавит новую запись (но может завершиться ошибкой, если в таблице уже есть Джон Смит и существует уникальное ограничение для FirstName / LastName)

0
ответ дан 7 December 2019 в 05:19
поделиться

Это зависит от того, каковы первичный ключ и/или уникальные ограничения в таблице. Если нет ни первичного ключа, ни уникальных ограничений, это ничем не отличается от базового оператора INSERT.

В документации дается достаточно четкое объяснение: http://dev.mysql.com/doc/refman/5.0/en/replace.html

0
ответ дан 7 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: