Sqlite是不能像其他数据库那样对列进行修改的,包括队列的重命名,删除列,修改列属性等操作
比如像mysql,其对表中的某一列是可以直接用sql进行操作的,如:
alter table test drop column name; --删除表列
alter table test modify address char(10) --修改表列类型 或者 alter table test change address address char(40)
alter table test change column address address1 varchar(30)--修改表列名
这些操作Sqlite都是不能直接操作的
那Sqlite如何实现对列的修改呢?下面提供一种思路:
首先将你所要修改的表,将表名改成临时表:
如:ALTER TABLE "Student" RENAME TO "_Student_old_20140409";
其次,再创建一张新表,新表的字段就是你所需要的字段,新表中的数据就是临时表中的数据,这样确保数据的完整性:
如:
CREATE TABLE "Student" (
"Id" INTEGER PRIMARY KEY AUTOINCREMENT,
"Name" Text);
INSERT INTO "Student" ("Id", "Name") SELECT "Id", "Title" FROM "_Student_old_20140409";
这样来间接修改列,有点麻烦
有些做法是直接,它在创建新表时同时把数据插进去,如:
create table Student as select Id,Name from _Student_old_20140409;
这样得到的Student也是有数据的,得到表的列也是可以符合我们的需求的,
但是有个问题是,这种方式得到的Student表,它是完全没有索引的,包括主键索引,所以要自行再加上主键索引和其他需要的索引
另外,附上Sqlite的命令操作手册:http://www.runoob.com/sqlite/sqlite-index.html