Я пытаюсь перенести эту строку с MS SQL Server на SQLite
IF NOT EXISTS(SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received')
INSERT INTO EVENTTYPE (EventTypeName) VALUES ('ANI Received');
Кажется, что SQLite не поддерживает ЕСЛИ НЕ СУЩЕСТВУЕТ, или, по крайней мере, я не могу заставить его работать. Я упустил что-то простое? Есть ли обходной путь?
IGNORE
При возникновении применимого нарушения ограничения алгоритм разрешения IGNORE пропускает одну строку, которая содержит нарушение ограничения, и продолжает обработку последующих строк оператора SQL, как будто ничего не пошло не так. Другие строки до и после строки, содержащей нарушение ограничения, вставляются или обновляются обычным образом. При использовании алгоритма разрешения конфликтов IGNORE ошибка не возвращается.Если вы хотите игнорировать вставку существующего значения, в вашей таблице должно быть поле 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');
Он не позволит повторно ввести существующее значение первичного ключа ... Вот как вы можете проверить, существует ли значение в таблице или нет.
источник
Вы также можете установить ограничение для таблицы с полями KEY и установить On Conflict "Ignore"
Документация по SQLite
источник