Estoy intentando portar esta línea de MS SQL Server a SQLite
IF NOT EXISTS(SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received')
INSERT INTO EVENTTYPE (EventTypeName) VALUES ('ANI Received');
Parece que SQLite no es compatible con SI NO EXISTE o al menos no puedo hacer que funcione. ¿Me estoy perdiendo algo simple? ¿Existe alguna solución?
IGNORE
cuando se produce una infracción de restricción aplicable, el algoritmo de resolución IGNORAR omite la fila que contiene la infracción de restricción y continúa procesando las filas posteriores de la declaración SQL como si nada hubiera salido mal. Otras filas antes y después de la fila que contenía la infracción de restricción se insertan o actualizan normalmente. No se devuelve ningún error cuando se utiliza el algoritmo de resolución de conflictos IGNORE.Si desea ignorar la inserción de un valor existente, debe haber un campo Clave en su Tabla. Simplemente cree una tabla con el campo de clave principal como:
CREATE TABLE IF NOT EXISTS TblUsers (UserId INTEGER PRIMARY KEY, UserName varchar(100), ContactName varchar(100),Password varchar(100));
Y luego inserte o reemplace / inserte o ignore la consulta en la tabla como:
INSERT OR REPLACE INTO TblUsers (UserId, UserName, ContactName ,Password) VALUES('1','UserName','ContactName','Password');
No permitirá que vuelva a ingresar el valor de clave principal existente ... Así es como puede verificar si un valor existe en la tabla o no.
fuente
También puede establecer una restricción en una tabla con los campos CLAVE y establecer en conflicto "Ignorar"
Documentación de SQLite
fuente