我在 iPhone 上使用 sqlite,我预计数据库架构可能会随着时间的推移而改变。每次成功迁移有哪些陷阱、命名约定和需要注意的事项?
例如,我考虑过在数据库名称后附加一个版本(例如 Database_v1)。
我维护的应用程序需要定期更新 sqlite 数据库并将旧数据库迁移到新架构,这就是我所做的:
为了跟踪数据库版本,我使用 sqlite 提供的内置用户版本变量(sqlite 对此变量不执行任何操作,您可以随意使用它)。它从 0 开始,您可以使用以下 sqlite 语句获取/设置该变量:
> PRAGMA user_version;
> PRAGMA user_version = 1;
当应用程序启动时,我检查当前的用户版本,应用使架构更新所需的任何更改,然后更新用户版本。我将更新包装在事务中,这样如果出现任何问题,更改就不会提交。
为了进行模式更改,sqlite 支持某些操作的“ALTER TABLE”语法(重命名表或添加列)。这是就地更新现有表的简单方法。请参阅此处的文档:http://www.sqlite.org/lang_altertable.html http://www.sqlite.org/lang_altertable.html。为了删除“ALTER TABLE”语法不支持的列或其他更改,我创建一个新表,将日期迁移到其中,删除旧表,并将新表重命名为原始名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)