続oracleのプライマリ・キー名の変更について
oracleのテーブル名を変更します。
運用上ネーミングルールとしてプライマリ・キー名はpk_テーブル名としていますので、
プライマリ・キー名もこの時に変更したいのですが、適切な手順を教えてください。
旧テーブル名:table_a
旧プライマリ・キー名:pk_table_a
↓ ↓ ↓
新テーブル名:table_b
新プライマリ・キー名:pk_table_b
という質問をさせて頂きました。
回答を頂き、一旦納得した気がしたのですが、どうもうまくいきません。
下記を実行すると4のところでコケます。
既にオブジェクトが存在するというものです。
どうやら
2のところのプライマリキー名変更がうまくいっていないか
pk_table_aがどこかにゴミとして残っているように思えます。
オブジェクトブラウザというツールで見てみると、
CONSTRAINTにpk_table_bが
INDEXのところにpk_table_aが見えています。
手順がおかしいのか?
コマンドが間違えているのか?
それともプライマリキー名の変更はしない方が良いのか?
ここら辺を教えてください。
--1.TABLE 作成
CREATE TABLE table_a
(
ITM1 VARCHAR2(10) NOT NULL,
ITM2 DATE,
CONSTRAINT pk_table_a PRIMARY KEY (ITM1) USING INDEX
)
/
--2.プライマリキー名変更
ALTER TABLE table_a RENAME CONSTRAINT pk_table_a TO pk_table_b
/
--3.テーブル名変更
RENAME table_a TO table_b
/
--4.「1」と同じTABLE 作成
CREATE TABLE table_a
(
ITM1 VARCHAR2(10) NOT NULL,
ITM2 DATE,
CONSTRAINT pk_table_a PRIMARY KEY (ITM1) USING INDEX
)
/
お礼
ありがうございました!