在我之前的应用版本中,我创建了一个表格,如:
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_FAV
和KEY_WORD
。
是否可以在升级时以某种方式改变表格?如果没有,我该怎么做才能让用户丢失他们的数据?
答案 0 :(得分:1)
无法运行将常规表转换为VIRTUAL
表的简单alter命令。
而不是你应该:
DROP
旧桌子。CREATE
新表。答案 1 :(得分:0)
通常可以安全地将新列添加到现有表中,只要它们可以为空并且/或具有默认值即可。为什么不创建现有表的副本并尝试对其进行更改(副本)以检查发生的情况 附:在DB运行时,您可能必须设置几个DB标志以允许更改表。