Как это сделать, если не существует в SQLite - PullRequest
76 голосов
/ 10 февраля 2009

Я пытаюсь перенести эту строку с MS SQL Server на SQLite

IF NOT EXISTS(SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received') 
    INSERT INTO EVENTTYPE (EventTypeName) VALUES ('ANI Received');

Кажется, что SQLite не поддерживает ЕСЛИ НЕ СУЩЕСТВУЕТ, или, по крайней мере, я не могу заставить его работать. Я что-то упустил? Есть ли обходной путь?

Ответы [ 3 ]

113 голосов
/ 10 февраля 2009

Как насчет этого?

INSERT OR IGNORE INTO EVENTTYPE (EventTypeName) VALUES 'ANI Received'

(не проверено, поскольку у меня нет SQLite ... однако эта ссылка весьма наглядна.)

Кроме того, это также должно работать:

INSERT INTO EVENTTYPE (EventTypeName)
SELECT 'ANI Received'
WHERE NOT EXISTS (SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received');
9 голосов
/ 23 апреля 2014

Если вы хотите игнорировать вставку существующего значения, в вашей таблице должно быть поле Key. Просто создайте таблицу с полем первичного ключа Как:

CREATE TABLE IF NOT EXISTS TblUsers (UserId INTEGER PRIMARY KEY, UserName varchar(100), ContactName varchar(100),Password varchar(100));

И затем вставьте или замените / вставьте или игнорируйте запрос к таблице, например:

INSERT OR REPLACE INTO TblUsers (UserId, UserName, ContactName ,Password) VALUES('1','UserName','ContactName','Password');

Он не позволит повторно ввести существующее значение первичного ключа ... Вот как можно проверить, существует ли значение в таблице или нет.

1 голос
/ 01 ноября 2012

Вы также можете установить ограничение для таблицы с помощью полей KEY и установить для параметра «Конфликт игнорировать»

Когда происходит нарушение применимого ограничения, разрешение IGNORE алгоритм пропускает одну строку, содержащую нарушение ограничения и продолжает обрабатывать последующие строки оператора SQL, как если бы ничего не пошло не так. Другие строки до и после строки, содержащей нарушение ограничения вставляется или обновляется нормально. Нет ошибки возвращается при использовании алгоритма разрешения конфликтов IGNORE.

Документация по SQLite

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