Подтвердить что ты не робот

SQLite Query для вставки записи Если не существует

Я хочу вставить запись в таблицу sqlite, если ее фактически не вставили.

Скажем, у него есть три поля pk, name, address

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

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

Ответ 3

Если вы не можете использовать UNIQUE INDEX в сочетании с INSERT INTO или INSERT OR IGNORE INTO, вы можете написать такой запрос:

INSERT INTO table (column)
SELECT value
WHERE NOT EXISTS (SELECT 1 
                  FROM table 
                  WHERE column = value)