2009-01-22 19 views
84

Tengo una tabla en PostgreSQL, donde el esquema es el siguiente:¿Cómo ALTERO una tabla de PostgreSQL y hago que una columna sea única?

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 
) 

Ahora quiero hacer el enlace permanente único a través de la mesa de ALTER-ción de la tabla. ¿Alguien puede ayudarme con esto?

TIA

+2

'crear índice único en foo_table (permalink) ' –

Respuesta

151

lo he descubierto a partir de la documentación de PostgreSQL, la sintaxis exacta es:

ALTER TABLE the_table ADD CONSTRAINT constraint_name UNIQUE (thecolumn); 

Gracias Fred.

134

O, tiene la base de datos asigna automáticamente un nombre de restricción usando:

ALTER TABLE foo ADD UNIQUE (thecolumn); 
11

también es posible crear una restricción única de más de 1 columna:

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

Esto no parece funcionar para algo como: ' ALTER TABLE acciones ADD CONSTRAINT actions_unique_constraint Acciones ÚNICAS (carga útil :: texto, nombre); 'o' ALTER TABLE ADD CONST RAINT actions_unique_constraint UNIQUE ((payload :: text), name); ' – writofmandamus

Cuestiones relacionadas