https://developer.android.com/reference/android/database/sqlite/package-summary.html
从 Android 5.0 开始,SQLite 版本几乎伴随 Android 版本进行升级:
最后,对应的操作顺序如下(参考 SQLite 官方提供的方法):
1、禁用外键约束
使用
PRAGMA foreign_keys = OFF
禁用它们
2、开启事务
3、记住与 Old 表关联的所有索引和触发器的格式
下面的步骤 8 中将需要此信息,可通过 SQL 语句查询:
1
|
SELECT type, sql FROM sqlite_master WHERE tbl_name='Old'
|
4、使用 CREATE TABLE 创建一个新表 New
新表的
Scheme
和旧表一致,同时,确保 New 名称不会与任何现有的表名冲突
5、复制插入数据
使用如下 SQL 语句将内容从 Old 传输到 New:
1
|
INSERT INTO New SELECT ... FROM Old
|
6、删除旧表 Old
7、对新表 New 进行重命名
1
|
ALTER TABLE New RENAME TO Old
|
8、重建索引和触发器
使用
CREATE INDEX
和
CREATE TRIGGER
重建与 Old 表关联的索引和触发器,参考第 3 步中保存的结果
9、重建 View 视图
如果有引用该表的 View 视图,要根据 Scheme 分析是否需要重建视图,使用
DROP VIEW
和
CREATE VIEW
命令
10、检查外键约束
如果最初启用了外键约束,则运行
PRAGMA foreign_key_check
验证表结构更改未破坏任何外键约束
11、提交事务
提交在步骤 2 中启动的事务
12、重新启用外键约束
使用
PRAGMA foreign_keys=ON
重新启用外键约束
这些SQLite与SQL差异问题,你遇到过吗
。