使用房间持久性存储更改 Sqlite 中列的数据类型



Invoice表为:

TABLE Invoice (UserId INTEGER NOT NULL, InvoiceNumber TEXT NOT NULL, Amount REAL NOT NULL, ...)

我想将列UserId数据类型更改为TEXT,而不会丢失表中已存在的任何数据。

如何使用Room进行操作,而无需删除并重新创建表?

不能直接更改列的数据类型 (UserId(。您可以按照以下步骤解决您的问题!

  1. 添加新列 (UserIdTemp(
  2. 将现有数据从UserId复制到UserIdTemp(将数据转换为所需格式(
  3. 删除旧列 (UserId(
  4. 使用新数据类型创建新列 (UserId(
  5. 将数据从UserIdTemp复制到UserId
  6. 掉落UserIdTemp

最新更新