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)?
Ответы
Ответ 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;