在一个语句中使用PRIMARY KEY创建表AS(PostgreSQL)

Tim*_*imY 41 postgresql primary-key create-table

有没有办法在单个"CREATE TABLE AS"语句中设置PRIMARY KEY?

示例 - 我希望将以下内容写入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);
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点(假设有超过2个表,例如10)?

pee*_*nut 48

根据手册:create tablecreate table,你可以:

  • 创建表与主键先,并使用选择进入
  • 创建表作为第一,并使用添加主键

但不能同时创建表作为主键 -你想要的东西.

  • 在这两个选项中,在加载*数据后创建主键(及其关联的索引)*可能会更快. (12认同)

fra*_*ncs 15

如果要创建具有与另一个表相同的表结构的新表,可以在一个语句(创建新表和设置主键)中执行此操作,如下所示:

create table mytable_clone (like mytable including defaults including constraints including indexes);
Run Code Online (Sandbox Code Playgroud)