НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
27 of 150 menu

ON DUPLICATE KEY UPDATE

Конструкция ON DUPLICATE KEY UPDATE используется совместно с командой INSERT для реализации upsert-логики. Если при вставке возникает конфликт по уникальному или первичному ключу, выполняется обновление указанных полей существующей записи.

Синтаксис

INSERT INTO table_name (column_list) VALUES (value_list) ON DUPLICATE KEY UPDATE column = expression

Таблицы для примеров

users
id email name login_count
1 ivan@example.com Ivan 3
2 olga@example.com Olga 1

Пример

Давайте при попытке вставки пользователя с уже существующим email обновим имя пользователя:

INSERT INTO users (id, email, name, login_count) VALUES (3, 'ivan@example.com', 'Ivan Updated', 1) ON DUPLICATE KEY UPDATE name = 'Ivan Updated'

Результат выполнения кода:

users
id email name login_count
1 ivan@example.com Ivan Updated 3
2 olga@example.com Olga 1

Пример

Давайте при конфликте ключа увеличим счётчик входов пользователя на единицу:

INSERT INTO users (id, email, name, login_count) VALUES (3, 'olga@example.com', 'Olga', 1) ON DUPLICATE KEY UPDATE login_count = login_count + 1

Результат выполнения кода:

users
id email name login_count
1 ivan@example.com Ivan Updated 3
2 olga@example.com Olga 2

Смотрите также

  • команду INSERT,
    которая добавляет записи
  • команду UPDATE,
    которая изменяет записи
  • команду UNIQUE,
    которая определяет уникальность значения
  • команду PRIMARY KEY,
    которая задаёт уникальный идентификатор строки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить