2018-03-20

SQLite3中修改字段名

移動(dòng)端開發(fā)的同學(xué)應(yīng)該都有使用 SQLite 數(shù)據(jù)庫(kù),在 APP 迭代升級(jí)時(shí)有時(shí)會(huì)有這樣的變態(tài)需求——不能動(dòng)原來的數(shù)據(jù)庫(kù)表,但要修改某個(gè)字段名……

下面就來探討下針對(duì)這種情況,我們?cè)撊绾尾僮鞅?,才能達(dá)成修改字段名的需求。也許有人會(huì)有用以下兩個(gè)語(yǔ)句……

ALTER TABLE user_table RENAME COLUMN name to name1; 
ALTER TABLE user_table CHANGE name name1 text;

但是經(jīng)筆者驗(yàn)證發(fā)現(xiàn),在 SQLite3中這根本是報(bào)錯(cuò)的……
那到底要怎么做呢—— 迂回作戰(zhàn),做法如下:

1.在舊表上增加一個(gè)修改后的字段。

  • 為了方便解說,這里筆者先建一個(gè)新的表user_table
CREATE TABLE IF NOT EXISTS user_table(ID integer PRIMARY KEY autoincrement, name text, age integer,uid real);
 INSERT INTO user_table (name,age,uid) VALUES('adward',11,108);
 INSERT INTO user_table (name,age,uid) VALUES('zhangSan',28,8);
 INSERT INTO user_table (name,age,uid) VALUES('李四',30,25);
 INSERT INTO user_table (name,age,uid) VALUES('王五',40,71);
  • 新增一個(gè)要修改后的字段,并賦值舊字段的值,新字段為 did ,用以替代 uid。
 ALTER TABLE user_table ADD COLUMN did INTEGER 
UPDATE user_table SET did = uid;
-- //如下語(yǔ)句在sqlite3中是有問題的
-- ALTER TABLE user_table DELETE COLUMN uid;

2.創(chuàng)建一個(gè)備份表user_table_backup,并拷貝除要?jiǎng)h除字段外其它字段的值。

CREATE TABLE IF NOT EXISTS user_table_backup(ID integer PRIMARY KEY autoincrement, name text, age integer, did real);
INSERT INTO user_table_backup SELECT ID,name,age,did FROM user_table;

3.刪除舊表,創(chuàng)建新表(字段名和備份表一致,表名和原表一樣),至此大功造成!

DROP TABLE user_table;
CREATE TABLE IF NOT EXISTS  user_table(ID integer PRIMARY KEY autoincrement, name text, age integer, did real);
-- 將備份表上的字段拷貝到新表中
INSERT INTO user_table SELECT ID,name,age,did FROM user_table_backup;

有興趣的小伙伴,試試看吧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 楚甜:女主角 年齡:16(高一上學(xué)期) 星座:雙子(1998年出生) 性格:內(nèi)向,冷淡,孤獨(dú),但是向往熱鬧,有點(diǎn)雙...
    可可豆子閱讀 473評(píng)論 0 5
  • 只有到了七月半,我才會(huì)靜下心來梳理您曾經(jīng)走過的日子,任心底的悲傷如潮水般涌起深深將我淹滅。 2017年9月4號(hào) ...
    林梅飛霞閱讀 390評(píng)論 0 1
  • 難過的時(shí)候,無法說話。以前如此,現(xiàn)在更甚。
    安小年axn閱讀 230評(píng)論 0 0
  • 人們總是以為自己可以知曉一切。 所以不必向瞎眼的人辯白,眼瞳里光華折射回憶和未來之間的現(xiàn)在,真實(shí)。還是鏡子的另一面...
    2c297ebd0054閱讀 259評(píng)論 0 1

友情鏈接更多精彩內(nèi)容