可能重复:
sqlite 中的 ALTER COLUMN
我想在升级时更改列的数据类型。知道如何更改列的数据类型。
使用 Alter table Alter column 语句时出现语法错误?
你不能,SQLite 的 ALTER TABLE非常有限:
因此您可以使用 ALTER TABLE 重命名表,也可以添加一个新列。从好的方面来说(至少对您而言),SQLite 的“类型”概念非常松散,并且更多地取决于您如何使用某些东西而不是如何定义列;例如:
sqlite> create table t (i int);
sqlite> insert into t (i) values (11);
sqlite> insert into t (i) values ('pancakes');
sqlite> select * from t;
i
11
pancakes
因此您可以将任何类型的数据放在任何其他类型的列中。
但是,如果您使用检查表架构以确定如何将表数据转换为本机类型的工具,则需要模拟 ALTER TABLE ALTER COLUMN。AFAIK,这样做的唯一方法是丑陋的方式:
我会以丑陋的方式去做,而忽略 SQLite 松散的类型系统;如果我'pancakes'
在一个被声明为整数的列中找到,我会有点困惑,并对负责人说一些严厉的话。
如本页所述
http://www.sqlite.org/lang_altertable.html
Sqlite 不支持该ALTER TABLE ALTER COLUMN
语法。
正如我所看到的,您必须将列的值存储在其他地方,添加一个新列,将存储的值重写到新列中,然后删除旧列。