如果实际上没有插入记录,我想在sqlite表中插入一条记录。
假设它有三个字段pk,name,address
如果没有预先添加该名称,我想用名称插入新记录。
我们可以在一个查询中执行此操作。似乎有时与SQL查询略有不同。
答案 0 :(得分:68)
是的,你可以用一个查询来做到这一点。
INSERT ON CONFLICT IGNORE 应该可以帮助您:http://www.sqlite.org/lang_conflict.html
在名称上放置一个唯一键,如果名称已存在,当您尝试插入记录时,这将产生冲突。
默认值为ABORT,因此如果没有IGNORE,语句将返回错误。如果您不想这样,请使用IGNORE。
答案 1 :(得分:23)
如果您无法将UNIQUE INDEX
与INSERT INTO
或INSERT OR IGNORE INTO
结合使用,则可以编写此类查询;
INSERT INTO table (column)
SELECT value
WHERE NOT EXISTS (SELECT 1
FROM table
WHERE column = value)
答案 2 :(得分:11)
为什么不在名称上添加唯一索引?