Removing (dropping) a Foreign Key Constraint in PostgreSQL

Had a need to drop a Foreign Key Constraint in PostgreSQL 8.x today, and this is how you do it:

database=> \d table_name;
Table "public.table_name"
Column | Type | Modifiers
------------------+------------------------+-----------
id | integer |
field | character varying(20) |
field_description | character varying(150) |
Indexes:
[..]
Foreign-key constraints:
"table_name_id_fkey" FOREIGN KEY (id) REFERENCES other_table(id) ON DELETE CASCADE

database=> ALTER TABLE table_name DROP CONSTRAINT "table_name_id_fkey";
ALTER TABLE
database=>

As simple as that. The name of the constraint is shown when describing the table with \d under “Foreign-key constraints”, and you simply do an ALTER statement to drop the constraint.

3 thoughts on “Removing (dropping) a Foreign Key Constraint in PostgreSQL”

  1. Thanks Mats! I searched for this on Google and your page popped up. I didn’t see your name at first, but it somehow appeared on my retina after I had left the page so I had to go back and check.

    Hope you are doing good!

    And, yes, the constraint is gone.


    Lars, currently in Palo Alto.

  2. ya it works very well really…thank…plz help me that how we rollback on using update command cause i have a serious problem in my company…….plz help me regarding this mail me i m using PostgreSQL okays…….

  3. Still useful 9 years later :)
    I added “CASCADE” to the ALTER TABLE command as the regular command was locking up my psql session:

    ALTER TABLE activities
    DROP CONSTRAINT “activities_created_by_fkey” CASCADE;

Leave a Reply

Your email address will not be published. Required fields are marked *