首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Oracle NUMBER 精度擴展:從 (16,2) 到 (16,5) 的正確姿勢

     編輯:程式設計綜合問答

直接修改不可行

ALTER TABLE t MODIFY (col NUMBER(16,5)) 要求列為空或無數據,否則報錯 ORA-01440。因為精度增加屬於元數據變更,Oracle 不允許在線擴展小數位。

標準遷移流程

  1. 創建新表:CREATE TABLE t_new AS SELECT * FROM t WHERE 1=0; 然後 ALTER TABLE t_new MODIFY (col NUMBER(16,5));
  2. 數據遷移:INSERT INTO t_new SELECT * FROM t; 原有兩位小數會自動補齊為 .000。
  3. 驗證無誤後重命名表、重建索引/約束/權限。

注意事項

  • 檢查 NUMBER(16,5) 整數位是否足夠(16-5=11 位),防止溢出。
  • 若表極大,考慮使用 DBMS_REDEFINITION 在線重定義。
  • 應用層確認讀寫邏輯兼容新精度(如金額計算、顯示格式)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved