Команда INSERT IGNORE

Команда INSERT IGNORE используется для добавления записей в таблицу без возникновения ошибки при конфликте уникального или первичного ключа. Если вставляемая строка нарушает ограничение, она пропускается, а выполнение запроса продолжается.

Синтаксис

sqlINSERT IGNORE INTO table_name (column_list)
VALUES (value_list)

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

users
id email name
1 ivan@example.com Ivan
2 petr@example.com Petr

Пример

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

sqlINSERT IGNORE INTO users (id, email, name)
VALUES (3, 'ivan@example.com', 'Ivan Clone')

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

users
id email name
1 ivan@example.com Ivan
2 petr@example.com Petr

Пример

Давайте вставим несколько записей, при этом строки с конфликтом уникального ключа будут пропущены, а остальные добавлены в таблицу:

sqlINSERT IGNORE INTO users (id, email, name)
VALUES
  (3, 'sergey@example.com', 'Sergey'),
  (4, 'petr@example.com', 'Petr Copy'),
  (5, 'olga@example.com', 'Olga')

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

users
id email name
1 ivan@example.com Ivan
2 petr@example.com Petr
3 sergey@example.com Sergey
5 olga@example.com Olga

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

  • команду INSERT,
    которая добавляет записи
  • команду UNIQUE,
    которая запрещает дубликаты значений
  • конструкцию ON DUPLICATE KEY UPDATE,
    которая обновляет при конфликте
  • команду REPLACE INTO,
    которая заменяет запись по ключу