android - 使用 Room Persistence Storage 在 Sqlite 中更改列的数据类型
问题描述
我有表Invoice
:
TABLE Invoice (UserId INTEGER NOT NULL, InvoiceNumber TEXT NOT NULL, Amount REAL NOT NULL, ...)
我想将UserId
列的数据类型更改为TEXT
不丢失表中已经存在的任何数据。
如何在Room
不删除和重新创建表的情况下使用它?
解决方案
您不能直接更改列 ( UserId
) 的数据类型。您可以按照以下步骤解决您的问题!
- 添加新列 (
UserIdTemp
) - 从
UserId
to复制现有数据UserIdTemp
(将数据转换为所需格式) - 删除旧列 (
UserId
) UserId
使用新数据类型创建一个新列 ( )- 将数据复制
UserIdTemp
到UserId
- 降低
UserIdTemp
推荐阅读
- python - 未能加载原生 TensorFlow 运行时 tensorflow
- php - Codeigniter 4 - 如何限制特定用户的数据访问
- mysql - 当使用 docker-compose 启动 mysql 时,我遇到了“无法加载 '/usr/share/zoneinfo/****** 作为时区”的问题
- java - 当我尝试使用多线程时出现 Java StackOverflowError
- python - Pygame:“pygame.Surface.fill()”之后无法在屏幕上绘制任何内容
- hadoop - 如何将三列的值从一个表 1 加载到另一个表 2 中,该表在配置单元中有单列?
- reactjs - 在 React 中一次只允许打开多个模式对话框中的一个
- python - 如何加密我的python项目并将其转换为exe
- marklogic - CORB 和 MLCP MarkLogic 的区别
- c# - 时间:2019-04-10 标签:c#nmodbus如何tcp slave