修改欄位長度時出現ora-30556錯誤的解決
阿新 • • 發佈:2019-02-16
今天在做表結構調整時,對一個表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
);
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
);