“为列指定的属性与现有列定义不兼容”

时间:2018-12-12 21:05:02

标签: db2

已经有一段时间了。

使用DB2 10 for z / OS,我被要求将表中的特定列从十进制(7,2)更改为十进制(7,4)。听起来很简单,对吧?

alter table MySchema.MyTable
alter column myColumn
set data type decimal(7,4);

但是,DB2响应此错误:“为列'MYCOLUMN'指定的属性与现有列定义不兼容。”

我曾经认为从十进制(7,2)转换为十进制(7,4)会非常简单,但是DB2对此表示反对。

除了删除表并从头开始创建表外,我还有什么选择?

谢谢!

戴夫

2 个答案:

答案 0 :(得分:2)

Db2不喜欢该更改的原因是您从99999.99变为999.9999

这真的是您想要的吗?从(7,2)到(9,4)只会再增加两个小数位而不丢失任何数据,因此Db应该允许。

我的db2发出警告,但允许您忽略该警告...

答案 1 :(得分:1)

创建一个正确类型的新列ALTER ADD COLUMN,使用UPDATE填充它,旧列使用ALTER DROP COLUMNRENAME COLUMN,因此设置原始列的名称。