我试图从Oracle中导出一些约束DDL:
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'TABLESPACE',false);
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SEGMENT_ATTRIBUTES',false);
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR',true);
DBMS_METADATA.GET_DDL
( 'CONSTRAINT',MYCONSTRAINT, ME);
我得到了
ALTER TABLE "ME"."MYTABLE" ADD CONSTRAINT "MYCONSTRAINT" PRIMARY KEY
("COL1") ENABLE;
我想要
ALTER TABLE "ME"."MYTABLE" ADD CONSTRAINT "MYCONSTRAINT" PRIMARY KEY ("COL1") USING INDEX MYINDEX);
我在Oracle 11.2的文档中找不到任何选项: http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_metada.htm#BGBJBFGE
知道如何实现这个目标吗?
答案 0 :(得分:0)
这可能会有所帮助,或者让你非常接近:
SELECT REPLACE(dbms_metadata.get_ddl('CONSTRAINT', constraint_name, USER)
,' USING INDEX '
,' USING INDEX "' || index_name || '" ' ) ddl
FROM user_constraints
WHERE index_name IS NOT NULL
AND constraint_name NOT LIKE 'BIN$%';