使用唯一值的新列的房间数据库迁移
Room Database Migration with new column using unique values
我正在尝试为 INDEX 添加一个新列到我的房间数据库的 table!我如何使用 MIGRATION 来更改 table,以便将所有以前的数据连同每行的新唯一索引一起放入 table。
如果它们是新值并且是唯一的,那么您将必须生成这些值。
迁移将按照以下方式进行:-
- 重命名原来的table。
- 使用修改后的架构创建 table。
- 使用修改后的架构创建索引。
- 从重命名的原始 table 中提取数据,应用唯一值并将数据插入新的 table。
- 这可能会也可能不会在单个查询中进行。
- 可能需要将数据提取到 Cursor 中,也许 MatrixCursor 可能会有所帮助。
- 注意获取正确的 SQL 以创建 table(s) 索引,然后在编译修改后从生成的 java 获取 SQL。如果使用 Android 查看,生成的 java 是清晰可见的。适当的 class 是一个与 @Database class 同名并带有 _Impl 后缀的数据库。 SQL 可以在 createAllTables 方法中找到。
我正在尝试为 INDEX 添加一个新列到我的房间数据库的 table!我如何使用 MIGRATION 来更改 table,以便将所有以前的数据连同每行的新唯一索引一起放入 table。
如果它们是新值并且是唯一的,那么您将必须生成这些值。
迁移将按照以下方式进行:-
- 重命名原来的table。
- 使用修改后的架构创建 table。
- 使用修改后的架构创建索引。
- 从重命名的原始 table 中提取数据,应用唯一值并将数据插入新的 table。
- 这可能会也可能不会在单个查询中进行。
- 可能需要将数据提取到 Cursor 中,也许 MatrixCursor 可能会有所帮助。
- 注意获取正确的 SQL 以创建 table(s) 索引,然后在编译修改后从生成的 java 获取 SQL。如果使用 Android 查看,生成的 java 是清晰可见的。适当的 class 是一个与 @Database class 同名并带有 _Impl 后缀的数据库。 SQL 可以在 createAllTables 方法中找到。