PostgreSQL:如何删除指定Schema下的同名视图且不检查指定表依赖
删除Schema Y里的customer视图(不用管Schema X表的依赖)
核心就是精准指定视图所在的Schema,别让数据库搞错操作对象,而且删除视图本来就和基表(Schema X的customer表)的依赖没关系——视图是依赖基表的,删视图不影响基表,也用不着检查基表的状态。
下面是主流数据库的具体操作命令:
PostgreSQL
用DROP VIEW命令,写全Schema和视图名:
-- 直接删除,视图不存在会报错 DROP VIEW Y.customer; -- 避免视图不存在时报错的写法 DROP VIEW IF EXISTS Y.customer;
要是有其他对象(比如别的视图、函数)依赖这个视图,想强制删掉不检查这些依赖,就加CASCADE:
DROP VIEW IF EXISTS Y.customer CASCADE;
注意:CASCADE处理的是依赖这个视图的对象,和Schema X的customer表完全无关,删除视图本身根本不会涉及基表的依赖检查。
MySQL
同样用DROP VIEW,指定Schema和视图名即可:
-- 直接删除视图 DROP VIEW Y.customer; -- 避免视图不存在时报错的写法 DROP VIEW IF EXISTS Y.customer;
MySQL里删除视图默认就不会检查基表的依赖,哪怕基表不存在,照样能正常删除视图。
注意事项
- 执行命令的账号必须拥有删除Schema Y中视图的权限
- 必须写完整的
Y.customer,不能只写customer,否则数据库可能根据当前搜索路径误操作Schema X的表
内容的提问来源于stack exchange,提问作者sai manoj
相关产品推荐
相关产品推荐

