如何更改derby数据库的列数据类型?

时间:2010-03-05 06:44:36

标签: sql database derby

我正在尝试更改derby db列的数据类型。当前价格列设置为DECIMAL(5,0)。我想把它改成DECIMAL(7,2)。我这样做了:

alter table item alter column price set data type DECIMAL(7,2);

但它不起作用,并显示错误:

Error: Only columns of type VARCHAR may have their length altered. 

我可以知道如何改变它吗?谢谢。

5 个答案:

答案 0 :(得分:25)

以下是将列MY_TABLE.MY_COLUMN从BLOB(255)更改为BLOB(2147483647)的Derby SQL脚本:

ALTER TABLE MY_TABLE ADD COLUMN NEW_COLUMN BLOB(2147483647);
UPDATE MY_TABLE SET NEW_COLUMN=MY_COLUMN;
ALTER TABLE MY_TABLE DROP COLUMN MY_COLUMN;
RENAME COLUMN MY_TABLE.NEW_COLUMN TO MY_COLUMN;

答案 1 :(得分:4)

我认为你可以这样做:

ALTER TABLE SCHEMA.TABLE ALTER "COLUMN-NAME" SET DATA TYPE VARCHAR(255);

(column-Name SET DATA TYPE VARCHAR(integer))以数据类型字符串为例......

答案 2 :(得分:3)

这是以这种方式更改列数据类型的稍微复杂的方法:

  1. 添加所需数据类型的新列
  2. 问题“更新...设置new-column = old-column将数据从旧列复制到新列
  3. 删除旧列
  4. 将新列重命名为旧列的名称。
  5. 稍微多一些步骤,但最终效果会相同。

    如果您无法确定SQL的确切详细信息,请告诉我们,我们会帮助您。

答案 3 :(得分:1)

您可以像这样更改表格:

ALTER TABLE [table] ALTER COLUMN [column] SET DATA TYPE [type];

或者在Rails中,只需使用:

change_column :table_name, :column_name, :integer

答案 4 :(得分:-3)

Posgtes Solution:

ALTER TABLE prices_table ALTER price_column TYPE decimal(7,2)