SQLite沒法使用drop column刪除表字段解決辦法

因爲項目需求變動,我須要在sqlite數據庫的表中刪除一個字段,通用的sql操做語句以下:sql

 

alter table record drop column name;


結果數據庫提示以下錯誤:
數據庫

 


搜索得知,原來SQLite目前還不支持drop column,因此必須想出另一種方法來進行表字段的刪除,讀者要是說:「直接刪掉這個表,而後在新建不見行了!」。spa

好吧,既然你這麼不怕麻煩那就不須要往下看了。code

我採用的方法是經過直接複製並過濾表結構來實現:sqlite

複製表結構的sql語句以下:it

 

create table temp as select * from record where 1=2;


後面的where 1=2是爲了只複製表的結構,而不會複製表的內容,即否則where條件執行便可,咱們也能夠寫做where 0=1。
table

 

好了,繼續正題,如上sql語句會複製一個和record表同樣表結構的temp表出來,可是咱們想要的是去除某一個字段(例如去除record表中的name字段),因此咱們須要修改sql語句以下:class

 

create table temp as select recordId, customer, place, time from record where 1 = 2;


這樣複製出來的表就會缺乏「name」字段,而後咱們刪除舊錶並修改新表名便可。
select

 

 

drop table record;

alter table temp rename to record;


好了,具體操做就是這些,你們若有建議,歡迎回復哦~
sql語句

相關文章
相關標籤/搜索