如何在Android上的SQLite中使用Alter table Alter列查询?

时间:2012-11-21 07:00:52

标签: android sqlite android-sqlite

  

可能重复:
  ALTER COLUMN in sqlite

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

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

2 个答案:

答案 0 :(得分:1)

你不能,SQLite's ALTER TABLE非常有限:

enter image description here

因此您可以使用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将新的正确表重命名为原始名称。
  5. 我会用丑陋的方式去做,忽略SQLite的松散类型系统;如果我在一个被声明为整数的列中找到'pancakes',我会有点困惑并且对负责人有一些严厉的话语。

答案 1 :(得分:0)

正如本页所述

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

Sqlite不支持ALTER TABLE ALTER COLUMN语法。

在我看来,您必须将列的值存储在其他位置,添加新列,将存储的值重写到新列中,然后删除旧列。