如果sqlite中已存在记录,则阻止插入

时间:2011-09-20 06:48:25

标签: iphone sqlite

我正在为iPhone编程,我正在为我的应用程序使用SQLITE DB。我有一种情况,我想在表中插入记录,只有先前不存在记录。否则不应插入记录。

我该怎么做?请任何机构建议我一个合适的查询。

谢谢你们所有人,

2 个答案:

答案 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标志检查响应,您可以检查该记录是否已存在。如果它不存在,你可以插入它,否则你跳过插入。

我希望这有用。