2012-10-16 64 views
0

我有一個簡單的問題,這可能有一個簡單的解決方案,但解決方案暗示我... 所以我有一個簡單的表,即手機有4列,我想添加一個新的列。由於SQLite不修改表,我必須刪除並創建。sqlite插入語句壞MOJO

phone_old

_id整數主鍵自動遞增,
名文本不爲空,
值文本

電話

_id整數主鍵自動遞增,
名文本不null,
ite mState文字不爲空,
值文本

,所以我做到以下幾點: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. ; 

什麼happends其結果是,該項目的狀態(同步)加入作爲最後的字段而不是在其是ITEMSTATE柱3。

所以列名不對應行值,這意味着ITEMSTATE在末尾添加(如該行的最後一欄並沒有像第3位,因爲它是應該)

只把ITEMSTATE在最後會解決問題,但自從我的表創建語句生成後,我將不得不重寫一堆代碼才能做到這一點,並且爲了讓我生氣,這組查詢返回垃圾..

有什麼想法?

回答

1

sqlite的不支持附加列

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