Создайте таблицу как с первичным ключом в одном операторе (PostgreSQL)

есть ли способ установить первичный ключ в одном операторе" создать таблицу как"?

пример - я хотел бы, чтобы следующее было написано в 1 заявлении, а не 2:

 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)?

5 ответов


согласно руководству:создать таблицу и создать таблицу в качестве вы можете:

  • создать таблицу сначала с первичным ключом и используйте выбор позже
  • создать таблицу в качестве во-первых, и использовать добавить первичный ключ позже

но не как создать таблицу в качестве С первичный ключ - то, чего вы хотели.


Если вы хотите создать новую таблицу с той же структурой таблицы другой таблицы, вы можете сделать это в одном операторе (как создание новой таблицы, так и установка первичного ключа) следующим образом:

create table mytable_clone (like mytable including defaults including constraints including indexes);

нет, нет более короткого способа создать таблицу и первичный ключ.


ну в mysql, оба возможно в одной команде

команда

create table new_tbl (PRIMARY KEY(`id`)) as select * from old_tbl;

здесь id является столбцом с первичным ключом old_tbl

сделано...


вы можете сделать так

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;