PostgreSQL 删除视图(如果存在)

Posted

技术标签:

【中文标题】PostgreSQL 删除视图(如果存在)【英文标题】:PostgreSQL DROP VIEW IF EXISTS 【发布时间】:2019-05-02 15:59:01 【问题描述】:

当我运行命令时在 PostgreSQL 中

DROP VIEW IF EXISTS view_name;

我得到了回应:

View IF dropped.

谁能解释一下这是什么意思?为什么使用“IF”这个词而不是像这样的回复:View view_name dropped

【问题讨论】:

【参考方案1】:

这不是 PostgreSQL 所做的。演示:

postgres=# create view view_name as select 1;
CREATE VIEW

postgres=# drop view if exists view_name;
DROP VIEW

postgres=# \echo :SERVER_VERSION_NUM
110002

postgres=# drop view if exists view_name;
NOTICE:  view "view_name" does not exist, skipping
DROP VIEW

可能您使用的不是 PostgreSQL,而是一个对该操作具有不同语法的 fork。查看SELECT version();的结果。

【讨论】:

谢谢@daniel-vérité -- 这是在 AWS 的 RDS 实例上运行的 PostgreSQL。 SELECT 版本结果是:“x86_64-pc-linux-gnu 上的 PostgreSQL 10.6,由 gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9) 编译,64 位” @russellelbert:如果您在 psql 下运行命令(远程连接到 RDS),您应该得到与我上面的答案相同的结果。我怀疑View IF dropped 消息来自试图解释语句并且做得不够好的SQL 客户端。 Gotchya,这完全有道理。再次感谢您的帮助!

以上是关于PostgreSQL 删除视图(如果存在)的主要内容,如果未能解决你的问题,请参考以下文章

sql 如果存在活动连接,则删除PostgreSQL数据库

Postgresql:如果视图被修改,则通知

如何在 PostgreSQL 中更改视图

查找表或视图的依赖对象

PostgreSQL:删除列并重新创建依赖视图

sql 删除SQL视图(如果存在)