sqlite insert语句BAD MOJO

时间:2012-10-16 12:22:36

标签: database sqlite

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

phone_old

_id整数主键自动增量,
名称文字不为空,
价值文本

电话

_id整数主键自动增量,
名称文字不为空,
itemState文本不为null,
价值文本

所以我做了以下事情: 我重命名旧桌子, 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放在最后可以解决问题,但是由于生成了我的表创建语句,我将不得不重写一大堆代码来实现这一点,并且为了这些问题,我很生气返回废话..

任何想法?

1 个答案:

答案 0 :(得分:1)

Sqlite确实支持追加列

 ALTER TABLE Phone ADD COLUMN [itemState] text not null default ''