REPLACE
INTO tblNames (FirstName, LastName)
VALUES ('John', 'Jones')
Если ограничение уникальности любого рода на FirstName
, LastName
или их комбинации, и оно нарушено, запись удаляется и вставляется с новыми значениями.
Запись будет заменена, если какое-либо из условий:
FirstName
является UNIQUE
и есть в столе John
,
LastName
является UNIQUE
и есть в столе Jones
,
FirstName, Lastname
UNIQUE
и в таблице есть John Jones
.
Обратите внимание, что REPLACE
операция является INSERT
, возможно, после DELETE
, который всегда будет влиять на таблицу.
В новых версиях MySQL
вы должны использовать INSERT … ON DUPLICATE KEY UPDATE
.
Когда я отвечал, не было тега «mysql», поэтому мои образцы кода являются стандартными SQL – UserControl
Есть ли способ избежать ошибки в вставке, если запись уже существует? – Matt
Вы можете выполнить 'select', чтобы проверить, существует ли запись перед выполнением обновления или вставки. Не уверен в MySQL, но в SQL Server вы даже можете избежать выбора. Типичный сценарий: обновление tblNames набор ... где ключ-условие если @@ ROWCOUNT = 0 - число строк, затронутых в последнем заявлении (т.е. обновление) вставки в tblNames .... извините, для позднего ответа, надеюсь, это поможет – UserControl