2009-01-22 8 views
84

Ich habe eine Tabelle in PostgreSQL, wo das Schema wie folgt aussieht:Wie ändere ich eine PostgreSQL-Tabelle und mache eine Spalte eindeutig?

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 
) 

Jetzt möchte ich über den Tisch den Permalink einzigartig machen, indem Sie die Tabelle ALTER-ing. Kann mir jemand dabei helfen?

TIA

+2

'erstellen eindeutigen Index für foo_table (permalink) ' –

Antwort

151

ich es von der PostgreSQL-Dokumentation herausgefunden, die genaue Syntax:

ALTER TABLE the_table ADD CONSTRAINT constraint_name UNIQUE (thecolumn); 

Dank Fred.

134

Oder haben die DB automatisch eine Einschränkung Namen zuweisen mit:

ALTER TABLE foo ADD UNIQUE (thecolumn); 
11

es ist auch möglich, eine eindeutige Einschränkung von mehr als 1 Spalte zu erstellen:

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

Dies scheint nicht zu funktionieren für: ' ALTER TABLE Aktionen ADD CONSTRAINT actions_unique_constraint UNIQUE (Nutzlast :: Text, Name); 'oder' ALTER TABLE Aktionen ADD CONST RAINT actions_unique_constraint UNIQUE ((payload :: text), Name); ' – writofmandamus