我正在开发一个使用本地SQLite数据库的AIR应用程序,想知道如何在分发新版本的应用程序时管理数据库模式更新。同时考虑跳过某些版本进行更新。例如,从1.0直接升级到1.5,而不是从1.0升级到1.1。
您会推荐哪种技术?
PRAGMA user_version
设置版本:
PRAGMA user_version = 5
我将每组更新保留在一个SQL文件中(该文件嵌入在应用程序中),并运行所需的更新以获得最新版本:
Select Case currentUserVersion
Case 1
// Upgrade to version 2
Case 2
// Upgrade to version 3
Case etc...
End Select
这允许应用程序更新自己到最新版本,而不管当前DB的版本如何。
我认为最简单的方法是将例如从1.0升级到1.5的更新视为从1.0到1.1、1.1到1.2等一系列更新的连续进行。对于每个版本更改,请保留一个转换脚本/代码片段。
然后,在数据库中保留一个带有版本字段的表,并编译所需版本到应用程序中。在启动时,如果版本字段与编译的版本不匹配,则逐个运行所有必需的转换脚本。
理想情况下,转换脚本应该启动一个事务,并将新版本写入数据库作为提交事务之前的最后语句。
switch
、case
或match
语句的语言中需要执行更复杂的转换操作,可以使用一系列的if
语句:if(version==1) { something; version=2} if(version==2) { something; version=3}
等等。 - undefined