Próbuję przenieść tę linię z MS SQL Server do SQLite
IF NOT EXISTS(SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received')
INSERT INTO EVENTTYPE (EventTypeName) VALUES ('ANI Received');
Wygląda na to, że SQLite nie obsługuje funkcji JEŚLI NIE ISTNIEJE lub przynajmniej nie mogę sprawić, by działało. Czy brakuje mi czegoś prostego? Czy jest w pobliżu praca?
IGNORE
w przypadku naruszenia stosownego ograniczenia algorytm rozpoznawania IGNORE pomija jeden wiersz zawierający naruszenie ograniczenia i kontynuuje przetwarzanie kolejnych wierszy instrukcji SQL, tak jakby nic nie poszło źle. Pozostałe wiersze przed i za wierszem zawierającym naruszenie ograniczenia są wstawiane lub aktualizowane normalnie. Żaden błąd nie jest zwracany, gdy używany jest algorytm rozwiązywania konfliktów IGNORE.Jeśli chcesz zignorować wstawienie istniejącej wartości, w tabeli musi znajdować się pole Klucz. Po prostu utwórz tabelę z podstawowym polem kluczowym, takim jak:
CREATE TABLE IF NOT EXISTS TblUsers (UserId INTEGER PRIMARY KEY, UserName varchar(100), ContactName varchar(100),Password varchar(100));
A następnie wstaw lub zamień / wstaw lub zignoruj zapytanie w tabeli, na przykład:
INSERT OR REPLACE INTO TblUsers (UserId, UserName, ContactName ,Password) VALUES('1','UserName','ContactName','Password');
Nie pozwoli mu ponownie wprowadzić istniejącej wartości klucza podstawowego ... W ten sposób można sprawdzić, czy wartość istnieje w tabeli, czy nie.
źródło
Możesz również ustawić ograniczenie w tabeli za pomocą pól KEY i ustawić opcję „Ignoruj” w przypadku konfliktu
Dokumentacja SQLite
źródło