REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...),(...),...
или REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
SELECT ...
или REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
SET col_name=expression, col_name=expression,...
Оператор REPLACE работает
точно так же, как INSERT, за
исключением того, что если старая
запись в данной таблице имеет то же
значение индекса UNIQUE или
PRIMARY KEY, что и новая, то
старая запись перед занесением
новой будет удалена. See
Раздел 6.4.3, «Синтаксис оператора INSERT».
Другими словами, команда
REPLACE не предоставляет
доступа к замещаемой записи. В
некоторых старых версиях MySQL такой
доступ иногда оказывался
возможным, но это был дефект,
который уже исправлен.
Для использования REPLACE у
вас должны быть привилегии
INSERT и DELETE для
таблицы.
При использовании команды
REPLACE функция
mysql_affected_rows() вернет
значение, равное 2, если
старая строка была заменена новой.
Объясняется это тем, что в таблицу
вставляется строка после того, как
удаляется дубликат.
Это позволяет легко определять,
какое действие произвела команда
REPLACE - добавление или
замещение строки. Достаточно
просто проверить, какое число
вернула функция
mysql_affected_rows() - 1
(строка добавлена) или 2
(замещена).
Следует учитывать, что, если не
используются индексы
UNIQUE или PRIMARY KEY,
то применение команды
REPLACE не имеет смысла, так
как она работает просто как
INSERT.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
