我正在尝试将此行从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,或者至少我无法使其工作。我是否缺少简单的东西?有解决方法吗?
Answers:
这个怎么样?
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');
IGNORE
当发生适用的约束违例时,IGNORE解析算法会跳过包含约束违例的一行,并继续处理SQL语句的后续行,就好像什么都没出错。包含约束违例的行之前和之后的其他行将正常插入或更新。使用IGNORE冲突解决算法时,不会返回任何错误。
如果要忽略现有值的插入,则表中必须有一个键字段。只需使用主键字段创建一个表,例如:
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');
它不会让它重新输入现有的主键值...这是您可以检查表中是否存在值的方法。