實際開發中,在創建表主鍵約束的時候,通常會級聯創建唯一索引。
假設現在需要在聯合主鍵中增加一個字段SO_COMPANY_CDE,剛開始的做法是刪除主鍵約束,再重新創建聯合主鍵
alter table CBS_AG_CNTR_MTHD drop CONSTRAINT PK_CBS_AG_CNTR_MTHD cascade;
--確認約束和索引的刪除情況
可以發現主鍵被刪除了,但是唯一索引依舊存在,因此如果插入重復的數據,還是會報違反約束的錯誤
處理方法:
在刪除約束的時候需要顯示的指定drop index選項來完成序偶因的級聯刪除,再級聯創建主鍵和索引即可
--刪除主鍵級聯刪除唯一索引
alter table CBS_AG_CNTR_MTHD drop CONSTRAINT PK_CBS_AG_CNTR_MTHD cascade drop index;
--創建主鍵級聯創建唯一索引
alter table CBS_AG_CNTR_MTHD
add constraint PK_CBS_AG_CNTR_MTHD primary key (CNTR_PACKG_UUID, SEQ_NUM, AGENCY_CDE, FEE_TYPE,SO_COMPANY_CDE)
using index
tablespace TS_CBS_TEST
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);