2009-01-22 9 views
84

J'ai une table dans PostgreSQL où le schéma ressemble à ceci:Comment modifier une table PostgreSQL et rendre une colonne unique?

CREATE TABLE "foo_table" (
    "id" serial NOT NULL PRIMARY KEY, 
    "permalink" varchar(200) NOT NULL, 
    "text" varchar(512) NOT NULL, 
    "timestamp" timestamp with time zone NOT NULL 
) 

Maintenant, je veux faire ce permalien unique sur la table par ALTER-tion de la table. Quelqu'un peut-il m'aider avec ça?

TIA

+2

'créer un index unique sur foo_table (permalink) ' –

Répondre

151

j'ai tout compris à partir de la documentation de PostgreSQL, la syntaxe exacte est:

ALTER TABLE the_table ADD CONSTRAINT constraint_name UNIQUE (thecolumn); 

Merci Fred.

134

Ou, ont la DB attribue automatiquement un nom de contrainte en utilisant:

ALTER TABLE foo ADD UNIQUE (thecolumn); 
11

il est également possible de créer une contrainte unique de plus de 1 colonne:

ALTER TABLE the_table ADD CONSTRAINT constraint_name UNIQUE (column1, column2); 
+0

Cela ne semble pas fonctionner pour quelque chose comme: ' ALTER TABLE actions AJOUTER CONTRAINT actions_unique_constraint UNIQUE (payload :: text, name); 'ou' ALTER TABLE actions AJOUTER CONST RAINT actions_unique_constraint UNIQUE ((payload :: text), nom); ' – writofmandamus

Questions connexes