Подтвердить что ты не робот

CREATE TABLE AS с PRIMARY KEY в одном заявлении (PostgreSQL)

Есть ли способ установить PRIMARY KEY в одном выражении "CREATE TABLE AS"?

Пример. Я хотел бы, чтобы следующее выражение было написано в 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);

Есть ли лучший способ сделать это вообще (предположим, что существует более двух таблиц, например 10)?

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

хорошо в mysql, оба возможны в одной команде

команда

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

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

сделано...

Ответ 5

Вы можете сделать это

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;