19

我正在尝试更改 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. 

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

4

5 回答 5

29

这是将 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;
于 2010-11-18T14:36:09.003 回答
8

我认为你可以这样做:

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

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

于 2015-08-09T08:42:39.200 回答
3

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

  1. 添加所需数据类型的新列
  2. 发出“update ... set new-column = old-column 将数据从旧列复制到新列
  3. 删除旧列
  4. 将新列重命名为旧列的名称。

稍微多一些步骤,但最终效果是一样的。

如果您无法确定执行此操作的 SQL 的确切细节,请告诉我们,我们会提供帮助。

于 2010-03-05T15:23:37.570 回答
3

您可以像这样更改表:

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

或在 中Rails,只需使用:

change_column :table_name, :column_name, :integer
于 2016-10-20T11:50:24.717 回答
-3

帖子解决方案:

ALTER TABLE prices_table ALTER price_column TYPE 十进制 (7,2 )

于 2010-03-05T06:50:01.663 回答