Задать вопрос
dimiork
@dimiork

SQLite: почему ON CONFLICT IGNORE возвращает duplicate error?

Руководствуясь документацией создал таблицу с уникальным индексом и полями, содержащими игнорирование ошибок при дублирующих записях.
Вот фидл: sqlfiddle.com/#!7/77dc6/5
По логике два из трех insert должны создать записи в таблице, проигнорировав duplicate error.
Однако, этого не происходит.
Первые три страницы в гугле на эту тему (все ссылки сиреневые :) ) утверждают, что я все делаю правильно. Но не работает. Почему?

[РЕШЕНИЕ]

Условие ON CONFLICT IGNORE (возможные варианты в документации) может быть использовано в нескольких случаях.
1) когда уникальным должна быть одна колонка;
CREATE TABLE User (
 id integer PRIMARY KEY,
 first_name text NOT NULL UNIQUE ON CONFLICT IGNORE,
 last_name text NOT NULL
);

2) когда уникальными должны быть несколько колонок, т. е. составной индекс
CREATE TABLE User (
 id integer PRIMARY KEY,
 first_name text NOT NULL,
 last_name text NOT NULL,
 UNIQUE(first_name, last_name)
 ON CONFLICT IGNORE
);
  • Вопрос задан
  • 819 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Инженер по тестированию
    5 месяцев
    Далее
  • Нетология
    Инженер по тестированию
    8 месяцев
    Далее
  • Thinknetica
    Профессиональная разработка на Ruby on Rails
    9 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽