当前位置:  开发笔记 > 数据库 > 正文

如何在SQLite中不存在

如何解决《如何在SQLite中不存在》经验,为你挑选了2个好方法。

我试图将此行从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或者至少我不能使它工作.我错过了一些简单的事吗?有解决方法吗?



1> beach..:

这个怎么样?

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');


谢谢.但是,应该注意INSERT OR IGNORE部分仅在EventTypeName设置为唯一时才有效.
真正.我认为它在样本SQL中的使用方式是独一无二的.如果不是,则应使用第二种方法.

2> TheDean..:

如果要忽略现有值的插入,表中必须有一个Key字段.只需创建一个包含主键字段的表:

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');

它不会让它重新输入现有的主键值...这是如何检查表中是否存在值的方法.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有