Как это сделать, если не существует в SQLite



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



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


Кажется, что SQLite не поддерживает, если не существует или, по крайней мере, я не могу заставить его работать.
Я упускаю что-то простое? Есть ли обходной путь?

568   3  

3 ответов:

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

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');

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

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');

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

вы также можете установить ограничение на таблицу с ключевыми полями и установить на конфликт "игнорировать"

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

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

Comments

    Ничего не найдено.