65

単一の「CREATE TABLE AS」ステートメントで PRIMARY KEY を設定する方法はありますか?

例 - 次の文を 2 つではなく 1 つの文で記述してほしい:

 CREATE TABLE "new_table_name" AS SELECT a.uniquekey, a.some_value + b.some_value FROM "table_a" AS a, "table_b" AS b WHERE a.uniquekey=b.uniquekey;
 ALTER TABLE "new_table_name" ADD PRIMARY KEY (uniquekey);

一般的にこれを行うためのより良い方法はありますか (2 つ以上のテーブル、たとえば 10 があると仮定します)?

4

6 に答える 6

70

マニュアルによると、次のいずれかの方法でテーブルを作成し、テーブル作成します。

  • 最初に主キーでテーブルを作成し、後でselect intoを使用します
  • 最初にテーブルを作成し、後で主キーの追加を使用します

しかし、両方が主キーのようにテーブルを作成するわけではありません-あなたが望んでいたものです。

于 2012-06-24T09:46:37.407 に答える
23

別のテーブルと同じテーブル構造を持つ新しいテーブルを作成する場合は、次のように 1 つのステートメント (新しいテーブルの作成と主キーの設定の両方) でこれを行うことができます。

create table mytable_clone (like mytable including defaults including constraints including indexes);
于 2012-06-25T06:59:36.817 に答える
1

いいえ、テーブルと主キーを作成するためのより短い方法はありません。

于 2012-06-24T09:41:56.390 に答える
-6

あなたはこのようにするかもしれません

CREATE TABLE IOT (EMPID,ID,Name, CONSTRAINT PK PRIMARY KEY( ID,EMPID)) 
 ORGANIZATION INDEX NOLOGGING COMPRESS 1 PARALLEL 4
AS SELECT 1 as empid,2 id,'XYZ' Name FROM dual;
于 2015-08-06T12:40:06.977 に答える