内容简介:ORA-01440: column to be modified must be empty to decrease precision or scale
在修改表字段的NUMBER类型的精度或刻度时,你可能会遇到ORA-01440: column to be modified must be empty to decrease precision or scale,下面介绍一下,如何处理这个问题。测试案例如下:
SQL> drop table test; Table dropped. SQL>create table test(product_id number, price number(38,1)); Table created. SQL> insert into test 2 select 1001, 18.2 from dual union all 3 select 1002, 38.5 from dual union all 4 select 1003, 34.8 from dual union all 5 select 1004, 87.4 from dual; 4 rows created. SQL> commit; Commit complete. SQL> alter table test modify price number(38,2); alter table test modify price number(38,2) * ERROR at line 1: ORA-01440: column to be modified must be empty to decrease precision or scale SQL>
如上所示,当我们修改字段price的NUMBEr类型的刻度时,就会遇到ORA-01440: column to be modified must be empty to decrease precision or scale,解决这个问题的方法有两种
方案1:
1:首先对该表做逻辑备份,当然如果你确定没有什么问题,也可以忽略此步骤。作为DBA,一般都应该有强烈的风险意识。
SQL> create table test_20170608_bak 2 as 3 select * from test; Table created. SQL>
2:增加一个临时字段用来复制旧字段数据
SQL> alter table test add price_tmp number(38,1); Table altered. SQL> update test set price_tmp = price; 4 rows updated. SQL> commit; Commit complete.
3:修改字段price的刻度(Scale)值
SQL> update test set price = null; 4 rows updated. SQL> commit; Commit complete. SQL> alter table test modify price number(38,2); Table altered.
4:将数据从字段price_tmp更新回price字段
SQL> update test set price = price_tmp; 4 rows updated. SQL> commit; Commit complete. SQL>
5:删除临时字段price_tmp
SQL> alter table test drop column price_tmp; Table altered.
方案2:
另外一种方法就是备份数据,然后删除全部数据,然后修改表结构,最后将数据更新回去。如下所示:
1:备份原表数据
SQL> create table test_bak 2 as 3 select * from test; Table created. SQL>
2:清理删除原表数据
SQL> truncate table test; Table truncated.
3:修改表资源的精度或标度
SQL> alter table test modify price number(38,3); Table altered. SQL>
4:将数据还原回去
SQL> insert into test 2 select * from test_bak; 4 rows created. SQL> commit; Commit complete. SQL> select * from test; PRODUCT_ID PRICE ---------- ---------- 1001 18.2 1002 38.5 1003 34.8 1004 87.4 SQL>
另外,需要注意的是,这两者方法都必须确保操作时,没有业务或应用程序操作该表,否则会有数据一致性问题。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C语言常用算法分析
明日科技 / 2012-1 / 39.80元
《C语言学习路线图•C语言常用算法分析》共分为4篇,第1篇为算法基础篇,包括程序之魂——算法、数据结构基础、查找与排序算法、基本算法思想等内容;第2篇为常用算法篇,包括数学算法、矩阵与数组问题、经典算法等内容;第3篇为趣味算法篇,包括数学趣题、逻辑推理题等内容;第4篇为算法竞技篇,包括计算机等级考试算法实例、程序员考试算法实例、信息学奥赛算法实例等内容。 《C语言学习路线图•C语言常用算法分......一起来看看 《C语言常用算法分析》 这本书的介绍吧!