質問: 同じテーブル設計にしたい createtable見積データ ( 見積番号varchar2(7)notnull, 得意先コードvarchar2(7), constraint 見積データ_key primary key ( 見積番号 ) ) storage ( initial 3020k next 302k pctincrease 0 ) tablespace kndn2; alter index 見積データ_key rebuild tablespace kec_ind storage ( initial 19k next 2k pctincrease 0 ); ******** 上記のようなテーブル設計のsql文がありますが、私が作ったものではなく都合によりこのテーブルを create table a2 as select from a; 上記のようなコピーを行いました。 あたらしいテーブルでも constraint 見積データ_key primary key ( 見積番号 ) ) storage ( initial 3020k next 302k pctincrease 0 ) tablespace kndn2; alter index 見積データ_key rebuild tablespace kec_ind storage ( initial 19k next 2k pctincrease 0 ); この制約と同じものを当てたいのですが、あとから追加するにはこの構文をどのように変えればいいのでしょうか?
回答: >create table a2 as select from a; でテーブルは作成されたのですね。 プライマリーキーを付与するのであれば、 constraint 見積データ_key --ここの名前を変えて下さい例えば見積データ2_keyとかに >storage ( initial 3020k next 302k pctincrease 0 ) >tablespace kndn2; >alter index 見積データ_key >rebuild tablespace kec_ind >storage ( initial 19k next 2k pctincrease 0 ); ここでは、最初に作ったプライマリーキーから、alter文で使用する領域が変更されているので、新規作成する場合は、変更後ので作ればいい訳です。 よって、こうなります。 >create table a2 as select from a; --これはもう作られているので問題ないです。 constraint 見積データ2_key primary key ( 見積番号 ) ) rebuild tablespace kec_ind storage ( initial 19k next 2k pctincrease 0 );