本文主要是介绍Oracle修改Number类型精度报错:ORA-01440,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
修改Number类型的字段的精度SQL
ALTER TABLE XXXX MODIFY RATE NUMBER(30,6);
如果表已经存在数据,报错信息如下:
ORA-01440: column to be modified must be empty to decrease precision or scale
废话不多说,解决方案如下:
1、备份数据表
CREATE TABLE XXXX_NEW AS SELECT * FROM XXXX;
XXXX:数据表名,XXXX_NEW:新数据表名
2、添加临时字段
ALTER TABLE XXXX ADD RATE_TMP NUMBER(30,6);
临时字段精度确保为需要调整的进度
3、复制旧字段数据到临时字段
UPDATE XXXX SET RATE_TMP = RATE;
4、清除旧字段数据
UPDATE XXXX SET RATE = NULL;
5、修改旧字段精度
ALTER TABLE XXXX MODIFY RATE NUMBER(30,6);
6、将临时字段数据更新回旧字段
UPDATE XXXX SET RATE = RATE_TMP;
7、删除临时字段
ALTER TABLE XXXX DROP COLUMN RATE_TMP;
总结:此方案,借用过渡字段进行调整,别不是直接修改原有字段(前提需要确定数据字段精度是否兼容)。
这篇关于Oracle修改Number类型精度报错:ORA-01440的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!