1. 程式人生 > >修改欄位長度時出現ora-30556錯誤的解決

修改欄位長度時出現ora-30556錯誤的解決

今天在做表結構調整時,對一個表wvls增加欄位長度時執行如下語句:
ALTER table wvls modify pnl_id varchar2(10);出現如下錯誤提示:
ORA-30556:functional index is defined on the column to be modified
錯誤提示還是比較簡單的,要修改的列被一個函式索引使用。如此只要找出這個索引,先drop再修改然後再重建索引。(注:由於有drop index 的動作,應該在系統閒時操作)
查看錶wvls發現其索引wvls1是個函式索引,且包含了pnl_id這個列。故先刪除些索引:
drop index wvls1;
然後再執行:ALTER table wvls modify pnl_id varchar2(10);提示成功。
最後重新建立wvls1這個函式索引:
create index WVLS1 on WVLS (FAC_ID, WORK_CTR, SUBSTR(PNL_ID,6,1), SUBSTR(PROD_NBR,5,2), SUBSTR(PROD_NBR,17,1))
  tablespace CPTQ
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );