------------------------------------------------------------------
-- Copyright(c) 2015-2016 pakkin. All Rights Reserved.
-- [改訂履歴]
-- 2015.08.22 作成
-- 2015.09.25 統計収集オプション追加、最大列数32まで可能に
-- 2016.07.19 LISTAGGコマンドに変更、マテリアライズド・ビューPK除外
--
-- [項目]
-- ADDPK_CMDLINE : 主キー追加コマンド
-- DELPK_CMDLINE : 主キー削除コマンド
--
-- [注意事項]
-- 降順指定には対応していません。
------------------------------------------------------------------
select 'ALTER TABLE ' || rpad(cons.TABLE_NAME,30)
|| ' ADD CONSTRAINT ' || rpad(cons.CONSTRAINT_NAME,30) || ' PRIMARY KEY('
|| LISTAGG(cols.COLUMN_NAME, ',') WITHIN GROUP (order by cols.COLUMN_POSITION asc)
|| ') USING INDEX COMPUTE STATISTICS ;' as ADDPK_CMDLINE
, 'ALTER TABLE ' || rpad(cons.TABLE_NAME,30) || ' DROP PRIMARY KEY;' as DELPK_CMDLINE
from USER_CONSTRAINTS cons
, USER_IND_COLUMNS cols
where cons.TABLE_NAME = cols.TABLE_NAME
and cons.INDEX_NAME = cols.INDEX_NAME
and cons.CONSTRAINT_TYPE = 'P'
-- and cons.TABLE_NAME in ('TABLE1','TABLE2')
and cons.CONSTRAINT_NAME not like 'BIN$%' --ごみ箱除外
and cons.CONSTRAINT_NAME not like 'SYS@_C@_SNAP$_%' escape '@' -- マテリアライズド・ビューPK除外
group by cons.TABLE_NAME, cons.CONSTRAINT_NAME
order by cons.TABLE_NAME, cons.CONSTRAINT_NAME
;
------------------------------------------------------------------
-- Copyright(c) 2015 pakkin. All Rights Reserved.
-- [改訂履歴]
-- 2015.09.15 作成
--
-- [項目]
-- ADDPK_CMDLINE : 主キー追加コマンド(FULL)
-- DELPK_CMDLINE : 主キー削除コマンド
--
-- [注意事項]
-- CLOB型で返ります
--
-- [補足]
-- 省略したい文字は置換で削って下さい。
------------------------------------------------------------------
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'PRETTY', FALSE);
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR', TRUE);
select substr(DBMS_METADATA.GET_DDL(OBJECT_TYPE=>'CONSTRAINT',NAME=>cons.CONSTRAINT_NAME),4) as ADDPK_CMDLINE
, 'ALTER TABLE ' || rpad(cons.TABLE_NAME,30) || ' DROP PRIMARY KEY;' as DELPK_CMDLINE
from USER_CONSTRAINTS cons
where cons.CONSTRAINT_TYPE = 'P'
-- and cons.TABLE_NAME in ('TABLE1','TABLE2')
and cons.CONSTRAINT_NAME not like 'BIN$%' --ごみ箱除外(エラー回避)
order by cons.TABLE_NAME, cons.CONSTRAINT_NAME
;
Copyright(c) 2014-2022 pakkin. All Rights Reserved.