0

我在需要 UUID 的多设备 android 系统上有一个 sqlite 数据库(是的,它需要它们),但是我没有将 UUID 设置为主键,而是 UUID 只是一列,主键只是每个上的 INTEGER设备(未传输)而是在本地 android 数据库上自动生成

我正在根据 UUID 是否存在执行更新(如果失败)插入例程 - 这非常慢,最终我想使用 SQLITESTATEMENT 将其转换为批量系统

但是,为了让我达到这一点,我需要使 INSERT OR REPLACE(或 REPLACE INTO)与我的数据集一起使用 - 据我了解,它仅基于主键是否已经存在才有效 - 因为我的主键是不是我真正关心的如何使 Replace Into 基于不同的列工作?或者也许我可以以不同的方式进行批量插入 - 不涉及替换成 - 但仍然可以处理插入或更新 -

任何帮助表示赞赏

我一直用于参考的一些项目我 如何更新表中的行或如果它不存在则插入它?

http://www.buzzingandroid.com/2013/01/sqlite-insert-or-replace-through-contentprovider/

提高 SQLite 的每秒插入性能?

如何在 Android 的 SQlite 中使用准备好的语句?

http://developer.android.com/reference/android/database/sqlite/SQLiteStatement.html#execute() Android SQLite 数据库:插入速度慢

4

1 回答 1

3

即使 UUID 不是主键也可以使用INSERT OR REPLACE,只要创建 UUID 字段即可UNIQUE

CREATE TABLE test (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  uuid UUID UNIQUE NOT NULL
);

任何违反UNIQUE约束的插入都会替换现有行(但会为新行生成新的主键)

一个非常简单的 SQLfiddle 来测试

于 2013-10-12T16:39:58.547 回答