如果 PostgreSQL 9+ 中存在列,如何删除它?

Posted

技术标签:

【中文标题】如果 PostgreSQL 9+ 中存在列,如何删除它?【英文标题】:How to drop column if it exists in PostgreSQL 9+? 【发布时间】:2017-03-21 05:44:00 【问题描述】:

我正在尝试从表中删除一列。如何检查该列是否存在?

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

甚至找到了How to check if a column exists in a SQL Server table?,但似乎不相关。

【问题讨论】:

您链接到的问题中的信息架构查询应该在 PostgreSQL 中工作。 【参考方案1】:

您只需将IF EXIST 添加到您的DROP COLUMN 语句中:

ALTER TABLE tableName
DROP COLUMN IF EXISTS columnName;

【讨论】:

【参考方案2】:

您也可以尝试通过 IF EXISTS 方法,在我们使用迁移时效果很好

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 $$;

【讨论】:

以上是关于如果 PostgreSQL 9+ 中存在列,如何删除它?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 postgresql 9.4 中的数组列中选择前几位

匹配两个数组列 postgresql-9.4-

错误:PostgreSQL 中不存在列

检查 json 类型列 PostgreSQL 中是不是存在字段

PostgreSQL - 如何保持列更新

jfinal显示postgresql数据库不存在