2014-03-24 46 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 ()函数。 –

相关问题