用户的文件系统上将有一个 SQLite 数据库。现在,我更新应用程序代码以添加另一列或整个关系,或放松约束。我是否创建应用程序在启动时执行的迁移脚本?我是否添加一些代码来尝试根据我使用的数据库来解决这个问题?
我是否添加一些代码来尝试根据我使用的数据库来解决这个问题?
可能不是 例如如果删除约束,它可以自动确定要删除的约束的唯一方法是通过打开两个数据库并执行语句进行检查来比较新旧模式。
我是否创建应用程序在启动时执行的迁移脚本?
可能是的。
您可能还希望使用
user_version
,这是一个 4 字节整数,您可以在其中存储版本号。由于该值存储在标头(文件的前 100 个字节)中,因此可以提取该值并将其与静态编译的预期版本号进行比较,然后再考虑打开数据库的相对费用,因此如果该版本存储在header 与预期版本相同,可以跳过迁移。