<rmcreative>

RSS

Все заметки с тегами «MySQL, REPLACE, ON DUPLICATE KEY UPDATE»

  1. MySQL, REPLACE INTO и ON DUPLICATE KEY UPDATE

    23 декабря 2012

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

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

    REPLACE

    REPLACE INTO
      vote
    SET
      user_id = 13,
      object_id = 42,
      value = 7

    INSERT INTO ON DUPLICATE KEY UPDATE

    INSERT INTO
      vote
    SET
      user_id = 13,
      object_id = 42,
      value = 7
    ON DUPLICATE KEY UPDATE
      value = 7

    Сходства

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

    Отличия

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

    12 комментариев

rokokbet

situs toto

situs toto

rokokbet

situs toto

rokokbet

situs toto

situs toto

situs toto

situs toto

situs toto

rokokbet

rokokbet

toto slot

rokokbet

situs toto

rokokbet

rokokbet

rokokbet

rokokbet

situs toto

situs toto

situs toto

situs toto

situs toto

situs toto

situs toto

situs toto

situs toto

situs toto

situs toto

slot gacor

situs toto

situs toto

situs toto slot gacor Slot Thailand Slot777 Slot Gacor Pg Soft Slot Gacor Slot88 Slot Online Terlengkap slot gacor Slot777 Deposit Via Dana slot online Slot Gacor Bet 100