如果 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 中的数组列中选择前几位