0

我有一个简单的问题,可能有一个简单的解决方案,但解决方案暗示了我......所以我有一个简单的表格,即有 4 列的电话,我想添加一个新列。由于 SQLite 不修改表,我必须删除并创建。

旧电话

_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 放在最后就可以解决问题,但是由于生成了我的表创建语句,因此我必须重写一大堆代码才能这样做,而且老实说,这组查询返回废话让我很生气。 .

有任何想法吗?

4

1 回答 1

1

Sqlite 确实支持附加列

 ALTER TABLE Phone ADD COLUMN [itemState] text not null default ''
于 2012-10-16T12:39:51.017 回答