2014-03-24 48 views
0

在當前現有模式中大多數索引/約束名稱是由oracle生成的,如SYS_CXXXXX,我試圖將它們導出爲DDL語句,這裏我需要用類似PK_(表名)或PK_(表名)1。感謝在將它們導出爲ddl時重命名索引名稱

+0

你嘗試過什麼?你有沒有研究過如何完成這件事? – mathielo

+0

did try this spool create_indexes.sql SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)DDL FROM USER_INDEXES u; 假脫機; 與此我正在創建腳本中獲取現有的索引名稱,而不是我試圖用名稱可以很容易地識別 – user2142732

回答

1

可以使用ALTER命令的命名選項來重命名約束/索引:

SQL> create table t (x int primary key); 

SQL> select constraint_name from user_constraints 
    2 where table_name = 'T'; 

CONSTRAINT_NAME                 
---------------------- 
SYS_C0010667                  

SQL> alter table t rename constraint sys_c0010667 to t_pk; 


SQL> select constraint_name from user_constraints 
    2 where table_name = 'T'; 

CONSTRAINT_NAME                 
---------------------- 
T_PK                    

SQL> select index_name from user_indexes where table_name = 'T'; 

INDEX_NAME                  
---------------------- 
SYS_C0010667                  

SQL> alter index sys_c0010667 rename to t_pk; 

Индекс изменен. 

SQL> select index_name from user_indexes where table_name = 'T'; 

INDEX_NAME                  
---------------------- 
T_PK  
+0

感謝德米特里,這可能鍛鍊,如果我們需要在現有schmema中的更改。但在這裏我正在嘗試創建schmea導出腳本。這種模式導出的結果是一些DDL語句,我試圖重命名DDL statemetns中的索引名稱,這可以讓我們有我們確定的索引/約束名稱 – user2142732

+0

在這種情況下,您可以僅替換CLOB數據中的對象名稱GET_DDL函數返回 - 使用replace ()函數。 –

相關問題