Запрос SQLite для Вставки записи, Если не существует

Я хочу вставить запись в sqlite таблицу если на самом деле не вставленный.

Скажем, это имеет три поля pk, имя, адрес

Я хочу ВСТАВИТЬ новую запись с именем если то имя, не добавленное ранее.

Мы можем сделать с этим в едином запросе. Походит на его немного отличающееся от SQL-запросов иногда.

25
задан systempuntoout 6 May 2010 в 09:21
поделиться

3 ответа

Почему бы просто не добавить уникальный индекс к имени?

11
ответ дан 15 October 2019 в 04:49
поделиться

Да, вы можете сделать это с помощью одного запроса.

INSERT ON CONFLICT IGNORE должен помочь вам: http://www.sqlite.org/lang_conflict.html

Установите уникальный ключ на имя, это создаст конфликт, когда вы попытаетесь вставить запись, если имя уже существует.

По умолчанию используется ABORT, поэтому без IGNORE оператор вернет ошибку. Если вы не хотите этого, используйте IGNORE.

68
ответ дан 28 November 2019 в 17:46
поделиться

Если вы не можете использовать УНИКАЛЬНЫЙ ИНДЕКС в сочетании с INSERT INTO или INSERT OR IGNORE INTO , вы можете написать такой запрос:

INSERT INTO table (column)
SELECT value
WHERE NOT EXISTS (SELECT 1 
                  FROM table 
                  WHERE column = value)
23
ответ дан 28 November 2019 в 17:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: