PostgreSQL删除视图(DROP VIEW)如果存在

5
在PostgreSQL中,当我运行命令:

DROP VIEW IF EXISTS view_name;

我收到了响应:
View IF dropped.

有人能解释一下这是什么意思吗?为什么使用单词'IF',而不是像查看视图已删除这样的响应?
1个回答

10

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,而是使用了一个有不同语法操作的分支版本。查看 SELECT version(); 的结果。

谢谢@daniel-vérité--它是在AWS上运行的RDS实例上的PostgreSQL。SELECT版本结果为:"PostgreSQL 10.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9), 64-bit" - russellelbert
2
@russellelbert:如果您在psql下运行命令(通过远程连接到RDS),则应该得到与我上面答案中相同的结果。我怀疑“View IF dropped”消息来自尝试解释语句但不够好的SQL客户端。 - Daniel Vérité
明白了,那很有道理。再次感谢您的帮助! - russellelbert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接