我正在研究大量使用SQLite3的应用程序,并希望确保表是正确的:它们是我对它们的期望(具有正确的列,列类型,notnull等)。我目前的做法是手动检查PRAGMA table_info()
返回的数据,并在错误的情况下删除表。
CREATE TABLE IF NOT EXISTS
仅检查表是否存在,但不与传递的描述匹配。通常,它很有用,但不适用于类型检查。
是否有一种方法可以比我已经做的更好呢?
答案 0 :(得分:1)
我这样做的方法是使用数据库user_version
来跟踪架构更改。因此,一般步骤是:
在初始数据库创建时,将用户版本设置为1,PRAGMA USER_VERSION = 1
在您的程序中,检查是否需要使用以下伪代码(current_schema_version
最初为1,但在每次模式更改时都会递增)来更新/删除/重新创建表。
if user_version == 0
new database, so create all tables in the database
set user_version = current_schema_version
else if user_version == current_schema_version - 1
create/recreate tables, or whatever other adjustments have to be made for new schema
set user_version = current_schema_version
endif