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