2012-06-24 93 views
24

有沒有辦法在單個「CREATE TABLE AS」語句中設置PRIMARY KEY?CREATE TABLE AS with PRIMARY KEY in one statement(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 )?

回答

28

根據手冊:create tablecreate table as您可以:

  • 創建表與主鍵先,並使用選擇爲
  • 創建表作爲第一,和使用添加主鍵以後

但不是兩個創建表爲主鍵 - 你想要什麼。

+6

這兩個選項中,創建主鍵(及其相關指數)* *後的數據加載可能會更快。 – kgrittn

1

不,沒有更簡單的方法來創建表和主鍵。

7

如果你想創建另一個表的相同的表結構的新表,你可以在一個聲明(包括創建新表並設置主鍵)這樣做:

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

你可以做這樣

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; 
+0

這對Postgres無效 –

+0

看起來像Oracle語法 – Gary

0

以及在MySQL中,無論是在一個命令可以

命令是

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

其中id是與old_tbl

完成主鍵列...

+0

Downvoted,因爲這是mysql語法,而不是postgres(每個問題)。在postgres中不可能。 – erikreed

+1

以及我在MySQL中發佈完全相同的問題,並且我自己使用這個命令解決了這個問題,所以我認爲這可能對我的朋友很有用(除了我還沒有被允許評論,並且認爲SQL語法對於Postgre SQL來說是一樣的,所以我發佈了這個答案)無論如何感謝擴大我對postgre sql的知識... – kaushikC

+0

上面的投票,即使它不是它對我有用的問題;) – karen

相關問題