Меню Закрыть

Mysql replace into пример

Содержание

Оператор 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 .

23 декабря 2012

В MySQL есть два расширения, которые позволяют атомарно вставить или обновить запись. Годятся они для штук с довольно высокой нагрузкой, когда без блокировок не работает типичный сценарий:

  1. Выбрать запись.
  2. Если выбралась — обновить.
  3. Если пусто — вставить.

REPLACE

INSERT INTO ON DUPLICATE KEY UPDATE

Сходства

И то и то выражение в итоге даст примерно тот же результат. При нарушении ограничения на уникальность (то есть UNIQUE KEY или PRIMARY KEY) не будет никакой ошибки. Для ключа user_id, object_id в базе будет единственная запись с значением 7 .

Отличия

Кроме очевидного отличия в синтаксисе есть и очень важно отличие в том, как всё это работает. REPLACE при срабатывании ограничения удаляет запись (и вызывает ON DELETE CASCADE ) и затем вставляет новую, что не так быстро, как ON DUPLICATE KEY UPDATE , который обновляет запись без удаления.

Читайте также:  Как научиться делать трюки на турнике

Основная задача блога — стать стартовой платформой для начинающих разработчиков, здесь не только буду писать свои статьи, но также буду выкладывать полезные ссылки которые помогут разобраться в разных вопросах. Будут затронуты темы: Ruby on Rails, PHP, MySQl, CodeIgniter, JQuery.

среда, 28 апреля 2010 г.

Пример использования REPLACE в MySQL

Предлагаю вашему вниманию пример использования метода REPLACE в MySQL.

Допустим, есть задача: в определенной таблице заменить в некотором поле символ "&" на "-":
Сложный способ:

UPDATE `table_name` t1, `table_name` t2
SET t1.`field_name`= REPLACE(t2.`field_name`, ‘&’, ‘-‘)
WHERE t1. >

Так как вся работа происходит в одной таблице, то необходимо использовать механизм алиасов для работы с одной таблицей как с двумя. Важным критерием является условие t1. >
Или более простой вариант, который работает когда t1. >
UPDATE `table_name`
SET `field_name`= REPLACE(`field_name`, ‘&’, ‘-‘);

Сам механизм замены предельно прост:
REPLACE(имя поля или просто текст, что меняем, на что меняем)

Простое и удобное решение. Надеюсь кому-то пригодится.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.