Can I add a UNIQUE constraint to a PostgreSQL table, after it's already created?

I have the following table:

 tickername | tickerbbname  | tickertype
------------+---------------+------------
 USDZAR     | USDZAR Curncy | C
 EURCZK     | EURCZK Curncy | C
 EURPLN     | EURPLN Curncy | C
 USDBRL     | USDBRL Curncy | C
 USDTRY     | USDTRY Curncy | C
 EURHUF     | EURHUF Curncy | C
 USDRUB     | USDRUB Curncy | C

I don't want there to ever be more than one column for any given tickername/tickerbbname pair. I've already created the table and have lots of data in it (which I have already ensured meets the unique criteria). As it gets larger, though, room for error creeps in.

Is there any way to add a UNIQUE constraint at this point?


psql's inline help:

\h ALTER TABLE

Also documented in the postgres docs (an excellent resource, plus easy to read, too).

ALTER TABLE tablename ADD CONSTRAINT constraintname UNIQUE (columns);

According to psql's inline: \h ALTER TABLE. Also, it's mentioned in the postgres docs (an excellent resource, plus easy to read, too) like this:. ALTER TABLE tablename ADD CONSTRAINT constraintname UNIQUE (columns);


Yes, you can. But if you have non-unique entries on your table, it will fail. Here is the how to add unique constraint on your table. If you're using PostgreSQL 9.x you can follow below instruction.

CREATE UNIQUE INDEX constraint_name ON table_name (columns);

PostgreSQL allows you to create a UNIQUE constraint to a group of columns using the following syntax: CREATE TABLE table ( c1 data_type, c2 data_type, c3 data_type, UNIQUE (c2, c3) ); The combination of values in column c2 and c3 will be unique across the whole table. The value of the column c2 or c3 needs not to be unique.


If you had a table that already had a existing constraints based on lets say: name and lastname and you wanted to add one more unique constraint, you had to drop the entire constrain by:

ALTER TABLE your_table DROP CONSTRAINT constraint_name;

Make sure tha the new constraint you wanted to add is unique/ not null ( if its Microsoft Sql, it can contain only one null value) across all data on that table, and then you could re-create it.

ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);

Create: Create table by using unique constraint in PostgreSQL. We can create a constraint on table column. Column 1 to column N: Column name used while creating a column in PostgreSQL. On this column we are creating a unique constraint. Data type: Data type defines on the basis that which type of data we have stored into the table. Data type is most important while creating table.


Yes, you can add a UNIQUE constraint after the fact. However, if you have non-unique entries in your table Postgres will complain about it until you correct them.

The UNIQUE constraint in PostgreSQL can be applied as a column constraint or a group of column constraint or a table constraint. The UNIQUE constraint in PostgreSQL violated when more than one row for a column or combination of columns which have been used as a unique constraint in a table.


However, the column can have many NULL values because PostgreSQL treats each NULL value to be unique. Notice that SQL standard only allows one NULL value in the column that has the UNIQUE constraint. PRIMARY KEY – this constraint is the combination of NOT NULL and UNIQUE constraints.


If we wanted to make sure that we don't add multiple records for the same pair, we could add UNIQUE constraints to the columns here: 1 CREATE TABLE national_capitals ( 2 country text NOT NULL UNIQUE ,


How to see if a single constraint is added to a column I have created a table in postgresql and added a unique constraint to one of its columns. How do I make sure that this constraint is added? How to check other unique constraints on columns of a table? I would like to do this in psql terminal interfac