0

目前,开发一个需要在服务器之间同步其数据的应用程序。该应用程序大量使用 SQLite,因此我们转向原始 sqlite 并决定使用 FMDatabase。我们的表是非规范化的并且没有键,因为我们不管理数据状态,只是收集数据并发送它。我们在某个时间间隔更新表(从服务器获取并插入新内容),但向服务器发送数据更为常见。

来自服务器的数据以带有 id 值(char 类型 GUID 值)的完整记录的形式出现,因此我们为表创建了 PK 键以包含这些 id 列。问题是,从服务器获取数据时,我只需要插入新记录,目前,我正在使用这些 id 值进行插入。由于 id 列上的唯一 PK 约束,一些记录被插入(新)和一些失败。对我来说,这很好,只是在控制台中惹恼消息(违反唯一键)并且不确定它是否会影响性能等。我可以在插入新记录之前循环记录,找到现有记录并只插入真正的新记录,但我认为这是一种浪费。

另外,我可以制作显式的内部 int id(PK 索引更快),但我们的表与 FK 无关,所以它是多余的。对此有什么想法吗?

4

1 回答 1

1

INSERT 语句带有可选的ON CONFLICT 子句,因此如果您想抑制警告,只需使用 INSERT OR IGNORE 并且重复的 PK 将被忽略。

于 2012-04-16T21:10:54.837 回答