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语句

相关文章
相关标签/搜索