SQLite查询插入记录如果不存在

时间:2010-05-06 09:06:52

标签: sqlite

如果实际上没有插入记录,我想在sqlite表中插入一条记录。

假设它有三个字段pk,name,address

如果没有预先添加该名称,我想用名称插入新记录。

我们可以在一个查询中执行此操作。似乎有时与SQL查询略有不同。

3 个答案:

答案 0 :(得分:68)

是的,你可以用一个查询来做到这一点。

INSERT ON CONFLICT IGNORE 应该可以帮助您:http://www.sqlite.org/lang_conflict.html

在名称上放置一个唯一键,如果名称已存在,当您尝试插入记录时,这将产生冲突。

默认值为ABORT,因此如果没有IGNORE,语句将返回错误。如果您不想这样,请使用IGNORE。

答案 1 :(得分:23)

如果您无法将UNIQUE INDEXINSERT INTOINSERT OR IGNORE INTO结合使用,则可以编写此类查询;

INSERT INTO table (column)
SELECT value
WHERE NOT EXISTS (SELECT 1 
                  FROM table 
                  WHERE column = value)

答案 2 :(得分:11)

为什么不在名称上添加唯一索引?