【发布时间】:2012-10-06 13:10:16
【问题描述】:
我有一个简单的问题,可能有一个简单的解决方案,但解决方案暗示了我...... 所以我有一个简单的表,即有 4 列的电话,我想添加一个新列。由于 SQLite 不修改表,我必须删除并创建。
phone_old
_id整型主键自增,
名称文本不为空,
值文本
电话
_id整型主键自增,
名称文本不为空,
itemState 文本不为空,
值文本
所以我执行以下操作: 1.我重命名旧表, 2. 我用额外的字段创建新的(在我的例子中是 itemState)和 3. 我选择并插入为 itemstate 定义默认值的所有内容。
1 ALTER TABLE Phone RENAME TO Phone_OLD;
2 CREATE table Phone(
_id integer primary key autoincrement,
name text not null,
itemState text not null,
value text );
3) INSERT INTO Phone SELECT * , 'Synced' as itemState from Phone_OLD where Phone_OLD. ;
结果是项目状态(同步)被添加为最后一个字段,而不是在第 3 列中,即 itemState。
所以列名与行值不对应,这意味着 itemstate 被添加到末尾(作为行中的最后一列,而不是应该的位置 3)
只需将 itemstate 放在末尾即可解决问题,但由于生成了我的表创建语句,因此我必须重写一大堆代码才能这样做,老实说,这组查询让我很生气返回废话..
有什么想法吗?
【问题讨论】: