關於contraint_name的一點說明

arthurtangel發表於2011-07-21
user_index的index_name,與user_constraints的constraint_type=P的constraint_name要一致。

如果不一致,將會有二條DDL語句,一條為:create unique index,一條為: alter table add primary key。
其實這樣是不需要的。
當然這樣沒有錯,但建表的順序必須是:先create unique index,再alter table add primary key。否則報錯。

我們可以保證user_index的index_name,與user_constraints的constraint_type=P的constraint_name要一致。
通過:
select 'alter table '||table_name ||' RENAME CONSTRAINT  '||constraint_name ||' to '||index_name||';',t.*
 from user_constraints t where constraint_type='P';

user_constratints的constraint_type='C'一般為列的check約束,如果不指定它的constraint_name,那麼系統會自己分配。
可以批量更改,也可以使用系統分配的constraint_name。


--改索引名:PK開頭primary key,Fk:foreign key,,,ck:check for column,,,IDX:NORMAL KEY......UK:UNIQ KEY
alter index XPK_T_ALARMCLASS6 rename to PK_T_ALARMCLASS6;
alter table T_ALARMCLASS RENAME CONSTRAINT  XCP_T_ALARMCLASS6 to PK_T_ALARMCLASS6;
alter table T_ALARMCLASS RENAME CONSTRAINT  XCC_T_ALARMCLASS7 to CK_T_ALARMCLASS7;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11990065/viewspace-702783/,如需轉載,請註明出處,否則將追究法律責任。

相關文章