我正在为iPhone编程,我正在为我的应用程序使用SQLITE DB。我有一种情况,我想在表中插入记录,只有先前不存在记录。否则不应插入记录。
我该怎么做?请任何机构建议我一个合适的查询。
谢谢你们所有人,
答案 0 :(得分:11)
查看SQLite的INSERT页面http://www.sqlite.org/lang_insert.html。
您可以使用以下语法
执行此操作INSERT OR IGNORE INTO tablename ....
实施例
INSERT OR IGNORE INTO tablename(id, value, data) VALUES(2, 4562, 'Sample Data');
注意:您需要在表列上有一个唯一标识行的KEY。只有在尝试插入重复的KEY时,INSERT OR IGNORE
才会插入新行。
在上面的示例中,如果KEY
上有id
,则不会插入另一行id = 2
。
如果KEY
上只有id and value
,那么id = 2 and value = 4562
的组合将导致无法插入新行。
简而言之,必须是唯一标识ROW 的密钥,然后才会知道数据库是否存在不应该被允许的副本。
否则如果您没有KEY,则需要转到SELECT
,然后检查行中是否有行。但是,无论您在列上使用哪种条件,都可以将它们作为KEY
添加到表中,只需使用INSERT OR IGNORE
在SQLite中,无法对表进行更改并添加UNIQUE或PRIMAY KEY等约束。为此,您需要重新创建表。请查看sqlite.org上的此常见问题解答 http://sqlite.org/faq.html#q11
答案 1 :(得分:3)
Hello Sankar您可以执行的是使用您要插入的记录执行选择查询,然后通过SQLite的SQLITE_NOTFOUND标志检查响应,您可以检查该记录是否已存在。如果它不存在,你可以插入它,否则你跳过插入。
我希望这有用。