oracle 修改某字段小數位精度 須要字段未empty的解決辦法

執行:alter table bosp_htjs_material_information modify taxrate number(16,3);
直接執行若是有數據會有報錯:ORA-01440: column to be modified must be empty to decrease precision or scaleorm

數據不是很是大的狀況下解決辦法:1.備份表數據,2.清空原表對應列 3.修改字段精度。4.同步更新數據值。5.截斷備份的臨時表並刪除ci

--1.create table BOSP_HTJS_MATERIAL_BAK as select * from BOSP_HTJS_MATERIAL_INFORMATION;
 select * from BOSP_HTJS_MATERIAL_BAK;
 
 --2.update BOSP_HTJS_MATERIAL_INFORMATION MI set MI.FEED_NUM = null;
  select * from BOSP_HTJS_MATERIAL_INFORMATION;同步

 --3.alter table BOSP_HTJS_MATERIAL_INFORMATION modify FEED_NUM number(16,3);io

 --4.update BOSP_HTJS_MATERIAL_INFORMATION MI set MI.FEED_NUM = (
    select MB.FEED_NUM from BOSP_HTJS_MATERIAL_BAK MB where MB.id = MI.id
 );table

 --5.truncate table  BOSP_HTJS_MATERIAL_BAK;drop table BOSP_HTJS_MATERIAL_BAK;form

相關文章
相關標籤/搜索