web-dev-qa-db-fra.com

CREATE TABLE AS avec PRIMARY KEY dans une instruction (PostgreSQL)

Existe-t-il un moyen de définir la PRIMARY KEY dans une seule instruction "CREATE TABLE AS"?

Exemple - Je voudrais que ce qui suit soit écrit en 1 déclaration plutôt qu'en 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);

Existe-t-il une meilleure façon de procéder en général (en supposant qu'il existe plus de 2 tableaux, par exemple 10)?

38
TimY

Selon le manuel: create table and create table as vous pouvez soit:

  • créer une table avec la clé primaire en premier et utiliser sélectionner dans plus tard
  • créer la table en tant que en premier et utiliser ajouter la clé primaire plus tard

Mais pas les deux créent une table en tant que avec clé primaire - ce que vous vouliez.

44
peenut

Si vous souhaitez créer une nouvelle table avec la même structure de table d'une autre table, vous pouvez le faire dans une seule instruction (à la fois créer une nouvelle table et définir la clé primaire) comme ceci:

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

Non, il n'y a pas de moyen plus court de créer la table et la clé primaire.

0