【问题标题】:How to drop column if it exists in PostgreSQL 9+?如果 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 中工作。

标签: sql 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 $$;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      相关资源
      最近更新 更多