-1

可能重复:
sqlite 中的 ALTER COLUMN

我想在升级时更改列的数据类型。知道如何更改列的数据类型。

使用 Alter table Alter column 语句时出现语法错误?

4

2 回答 2

1

你不能,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,这样做的唯一方法是丑陋的方式:

  1. 创建一个具有您要查找的架构的新表。
  2. 将旧表中的所有内容复制到新表中。
  3. 删除原始表。
  4. 使用 ALTER TABLE RENAME 将新的正确表重命名为原始名称。

我会以丑陋的方式去做,而忽略 SQLite 松散的类型系统;如果我'pancakes'在一个被声明为整数的列中找到,我会有点困惑,并对负责人说一些严厉的话。

于 2012-11-21T07:14:37.617 回答
0

如本页所述

http://www.sqlite.org/lang_altertable.html

Sqlite 不支持该ALTER TABLE ALTER COLUMN语法。

正如我所看到的,您必须将列的值存储在其他地方,添加一个新列,将存储的值重写到新列中,然后删除旧列。

于 2012-11-21T07:14:31.457 回答