1

在我之前的应用程序版本中,我创建了一个表格,如下所示:

public static final String CREATE_DATABASE = "CREATE TABLE " + TABLE_NAME
        + "(_id INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_NAME_TITLE + " TEXT, "
        + COLUMN_NAME_LOGIN + " TEXT, " + COLUMN_NAME_PASSWORD + " TEXT, " + COLUMN_NAME_NOTES
        + " TEXT);";

在当前版本中,我创建了一个表,如下所示:

public static final String CREATE_DATABASE = "CREATE VIRTUAL TABLE " + TABLE_NAME + " USING fts3 "
        + "(_id INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_NAME_TITLE + " TEXT, "
        + COLUMN_NAME_LOGIN + " TEXT, " + COLUMN_NAME_PASSWORD + " TEXT, " + COLUMN_NAME_NOTES
        + " TEXT, " + COLUMN_NAME_FAV + " INTEGER DEFAULT 0, " + KEY_WORD + ");";

所以现在是VIRTUAL,创建USING fts3并添加了两个新列COLUMN_NAME_FAVKEY_WORD.

升级时有可能以某种方式改变表吗?如果没有,我应该怎么做才能让用户不会丢失他们的数据?

4

2 回答 2

1

无法运行将常规表转换为表的简单 alter 命令VIRTUAL

取而代之的是,您应该:

  1. 将表中的数据加载到内存中/复制表。
  2. DROP旧表。
  3. CREATE新表。
  4. 使用步骤 1 中的数据填充新表。
于 2012-09-04T22:57:46.617 回答
0

通常,将新列添加到现有表是安全的,只要它们可以为空和/或具有默认值。为什么不创建现有表的副本并尝试更改它(副本)以检查会发生什么。
PS 您可能必须设置一些 DB 标志以允许在 DB 运行时更改表。

于 2012-09-04T22:47:40.180 回答