55
votes

I am trying to drop a column from a table. How can I check if the column exists or not?

I went through the documentation at https://www.postgresql.org/docs/9.2/static/sql-altertable.html, but didn't find any example how to do it.

Even found How to check if a column exists in a SQL Server table?, but it does not seem relevant.

2
The information schema query in the question you link to should work in PostgreSQL. - Peter Eisentraut

2 Answers

92
votes

You just need to add IF EXIST to your DROP COLUMN statement:

ALTER TABLE tableName
DROP COLUMN IF EXISTS columnName;
3
votes

You can also try via IF EXISTS Method which work great while we are using migration

DO $$

BEGIN

    IF EXISTS(
    SELECT column_name FROM information_schema.columns WHERE table_name = tableName AND column_name = columnName)
    THEN
        ALTER TABLE tableName DROP COLUMN columnName;
    END IF;

END $$;