Ich versuche, diese Zeile von MS SQL Server nach SQLite zu portieren
IF NOT EXISTS(SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received')
INSERT INTO EVENTTYPE (EventTypeName) VALUES ('ANI Received');
Es scheint, dass SQLite WENN NICHT EXISTIERT nicht unterstützt wird oder ich es zumindest nicht zum Laufen bringen kann. Vermisse ich etwas Einfaches? Gibt es eine Problemumgehung?
IGNORE
Wenn eine anwendbare Einschränkungsverletzung auftritt, überspringt der IGNORE-Auflösungsalgorithmus die eine Zeile, die die Einschränkungsverletzung enthält, und verarbeitet die nachfolgenden Zeilen der SQL-Anweisung weiter, als ob nichts schief gelaufen wäre. Andere Zeilen vor und nach der Zeile, die die Einschränkungsverletzung enthielt, werden normal eingefügt oder aktualisiert. Bei Verwendung des IGNORE-Konfliktlösungsalgorithmus wird kein Fehler zurückgegeben.Wenn Sie das Einfügen eines vorhandenen Werts ignorieren möchten, muss Ihre Tabelle ein Schlüsselfeld enthalten. Erstellen Sie einfach eine Tabelle mit Primärschlüsselfeld wie:
CREATE TABLE IF NOT EXISTS TblUsers (UserId INTEGER PRIMARY KEY, UserName varchar(100), ContactName varchar(100),Password varchar(100));
Und dann Abfrage in die Tabelle einfügen oder ersetzen / einfügen oder ignorieren wie:
INSERT OR REPLACE INTO TblUsers (UserId, UserName, ContactName ,Password) VALUES('1','UserName','ContactName','Password');
Der vorhandene Primärschlüsselwert wird nicht erneut eingegeben. Auf diese Weise können Sie überprüfen, ob ein Wert in der Tabelle vorhanden ist oder nicht.
quelle
Sie können auch eine Einschränkung für eine Tabelle mit den KEY-Feldern festlegen und On Conflict auf "Ignorieren" setzen.
SQLite-Dokumentation
quelle