关于sql:如果在PostgreSQL 9+中存在列,如何删除列?

How to drop column if it exists in PostgreSQL 9+?

我正试图从一张桌子上放下一列。如何检查列是否存在?

我浏览了https://www.postgresql.org/docs/9.2/static/sql-altertable.html上的文档,但没有找到任何如何做的示例。

甚至找到了如何检查SQL Server表中是否存在列?但似乎不相关。


你只需要在你的DROP COLUMN声明中加上IF EXIST

1
2
ALTER TABLE tableName
DROP COLUMN IF EXISTS columnName;

您还可以尝试via if exists方法,该方法在我们使用迁移时非常有效。

1
2
3
4
5
6
7
8
9
10
11
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 $$;