Ответ 1
Почему бы просто не добавить уникальный индекс для имени?
Я хочу вставить запись в таблицу sqlite, если ее фактически не вставили.
Скажем, у него есть три поля pk, name, address
Я хочу ВСТАВИТЬ новую запись с именем, если это имя не добавлено предварительно.
Мы можем сделать это в одном запросе. Похоже, что он немного отличается от SQL-запросов.
Почему бы просто не добавить уникальный индекс для имени?
Да, вы можете сделать это с помощью одного запроса.
INSERT ON CONFLICT IGNORE должен помочь вам: http://www.sqlite.org/lang_conflict.html
Поместите уникальный ключ в имя, это создаст конфликт при попытке вставить запись, если имя уже существует.
По умолчанию используется ABORT, поэтому без IGNORE инструкция вернет ошибку. Если вы этого не хотите, используйте IGNORE.
Если вы не можете использовать UNIQUE INDEX
в сочетании с INSERT INTO
или INSERT OR IGNORE INTO
, вы можете написать такой запрос:
INSERT INTO table (column)
SELECT value
WHERE NOT EXISTS (SELECT 1
FROM table
WHERE column = value)