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
);
  • Вопрос задан
  • 798 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы