Я пытаюсь перенести эту строку с MS SQL Server на SQLite
IF NOT EXISTS(SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received')
INSERT INTO EVENTTYPE (EventTypeName) VALUES ('ANI Received');
Кажется, SQLite не поддерживает IF NOT EXISTS или, по крайней мере, я не могу заставить его работать. Я что-то пропустил? Есть ли способ обхода?
Как насчет этого?
INSERT OR IGNORE INTO EVENTTYPE (EventTypeName) VALUES 'ANI Received'
(Untested, поскольку у меня нет SQLite... однако эта ссылка довольно описательна.)
Кроме того, это также должно работать:
INSERT INTO EVENTTYPE (EventTypeName)
SELECT 'ANI Received'
WHERE NOT EXISTS (SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received');
Если вы хотите игнорировать вставку существующего значения, в таблице должно быть поле Key. Просто создайте таблицу с полем первичного ключа Like:
CREATE TABLE IF NOT EXISTS TblUsers (UserId INTEGER PRIMARY KEY, UserName varchar(100), ContactName varchar(100),Password varchar(100));
И затем вставьте или замените/вставьте или проигнорируйте запрос в таблице Like:
INSERT OR REPLACE INTO TblUsers (UserId, UserName, ContactName ,Password) VALUES('1','UserName','ContactName','Password');
Это не позволит ему повторно ввести существующее значение основного ключа... Это как вы можете проверить, существует ли значение в таблице или нет.
Вы также можете установить ограничение на таблицу с полями KEY и установить On Conflict "Ignore"
При наличии соответствующего нарушения ограничений разрешение IGNORE алгоритм пропускает одну строку, содержащую нарушение ограничения и продолжает обработку последующих строк инструкции SQL, как если бы ничего не получилось. Другие строки до и после строки, содержащей нарушение ограничений вставляется или обновляется в обычном режиме. Ошибка отсутствует. возвращается, когда используется алгоритм разрешения конфликта IGNORE.