我还没有看到这个确切的问题......我很抱歉,如果我错过了。
我有我在创建它,当他们失去了合同,我公司的公司承继的数据库。 现在,客户有“紧急”的问题,以更改值的精度。 他们想改变为10.3至10.8的数字; 该字段在数据库中作为10,3定义。 在我的问题的研究,看来我必须做相当多的操作要做到这一点,因为该表必须为空的改变精度。 我假设,即使默认值是10.38(或者不管它是什么),因为他们将它定义为10,3在创建时,如果我只是增加在ColdFusion代码字段,当它保存,它会截断为10,3 ? 这种变化将涉及我捕捉当前数据,删除数据,改变精度,然后重新加载数据,以确保现有的数据已经被改变了。 是的,我知道这不是在细节,但希望得到跨越点。 谢谢。
你真的想从一个NUMBER(10,3)到NUMBER(10,8)的变化? 这将显著限制可以存储在该领域数的范围 - 这也正是为什么你不能做到这一点时,有列数据。
或者,你的意思是你要增加3到8位小数的数量,同时仍允许值相同的总范围是多少? 如果是这样,那么我认为你要改变NUMBER(10,3)到NUMBER(15,8) - 你应该能够做到这一点,即使列包含数据使用简单的ALTER。
处理这种情况最简单的方法是重命名列,复制过来,然后删除原始列中的数据:
alter table EVAPP_FEES rename column AMOUNT to AMOUNT_OLD;
alter table EVAPP_FEES add AMOUNT NUMBER(14,2);
update EVAPP_FEES set AMOUNT = AMOUNT_OLD;
alter table EVAPP_FEES drop column AMOUNT_OLD;
要么
alter table EVAPP_FEES add AMOUNT_TEMP NUMBER(14,2);
update EVAPP_FEES set AMOUNT_TEMP = AMOUNT;
update EVAPP_FEES set AMOUNT = null;
alter table EVAPP_FEES modify AMOUNT NUMBER(14,2);
update EVAPP_FEES set AMOUNT = AMOUNT_TEMP;
alter table EVAPP_FEES drop column AMOUNT_TEMP;