SQLite Query для вставки записи, если не существует - PullRequest
25 голосов
/ 06 мая 2010

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

Допустим, у него есть три поля: pk, name, address

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

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

Ответы [ 3 ]

68 голосов
/ 06 мая 2010

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

ВСТАВКА НА КОНФЛИКТ ИГНОР Поместите уникальный ключ в имя, это создаст конфликт, когда вы попытаетесь вставить запись, если имя уже существует. По умолчанию ABORT, поэтому без IGNORE инструкция выдаст ошибку. Если вы не хотите этого, используйте IGNORE.

23 голосов
/ 07 мая 2010

Если вы не можете использовать UNIQUE INDEX в сочетании с INSERT INTO или INSERT OR IGNORE INTO, вы можете написать запрос, подобный этому;

INSERT INTO table (column)
SELECT value
WHERE NOT EXISTS (SELECT 1 
                  FROM table 
                  WHERE column = value)
11 голосов
/ 06 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...