SQLite中如何做不IF EXISTS

我试图从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,或者至less我不能使它工作。 我错过了一些简单的东西吗 有没有解决方法?

这个怎么样?

 INSERT OR IGNORE INTO EVENTTYPE (EventTypeName) VALUES 'ANI Received' 

(未经testing,因为我没有SQLite …但是这个链接是相当描述性的。)

另外,这也应该工作:

 INSERT INTO EVENTTYPE (EventTypeName) SELECT 'ANI Received' WHERE NOT EXISTS (SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received'); 

如果您想忽略现有值的插入,则表中必须有Key字段。 只需使用主键字段创build一个表就像:

 CREATE TABLE IF NOT EXISTS TblUsers (UserId INTEGER PRIMARY KEY, UserName varchar(100), ContactName varchar(100),Password varchar(100)); 

然后在表格中插入或replace/插入或忽略查询如:

 INSERT OR REPLACE INTO TblUsers (UserId, UserName, ContactName ,Password) VALUES('1','UserName','ContactName','Password'); 

它不会让它重新input现有的主键值…这是如何可以检查表中是否存在一个值。

您也可以使用KEY字段在表格上设置约束,并设置为“冲突”“忽略”

当发生适用的约束冲突时,IGNOREparsingalgorithm将跳过包含约束冲突的一行,并继续处理SQL语句的后续行,就像没有任何错误发生一样。 包含违反约束的行之前和之后的其他行正常插入或更新。 使用IGNORE冲突解决algorithm时不返回错误。

SQLite文档