已经有一段时间了。
使用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对此表示反对。
除了删除表并从头开始创建表外,我还有什么选择?
谢谢!
戴夫
答案 0 :(得分:2)
Db2不喜欢该更改的原因是您从99999.99变为999.9999
这真的是您想要的吗?从(7,2)到(9,4)只会再增加两个小数位而不丢失任何数据,因此Db应该允许。
我的db2发出警告,但允许您忽略该警告...
答案 1 :(得分:1)
创建一个正确类型的新列ALTER ADD COLUMN
,使用UPDATE
填充它,旧列使用ALTER DROP COLUMN
。 RENAME COLUMN
,因此设置原始列的名称。