postgresql - 哪些对象可以通过 DROP VIEW CASCADE 删除

标签 postgresql view

使用DROP VIEW xxx CASCADE时,除了其他 View 之外,是否还有其他可以删除的对象?

Documentation没有澄清太多:

CASCADE

Automatically drop objects that depend on the view (such as other views),

最佳答案

可以删除的对象类型有很多,但您可能会遇到的对象类型却很少。

View 可能会被其他 View 、具体化 View 或规则直接引用。 (不会跟踪函数内部的引用,因此 CASCADE 不会获取它们;它们只会在运行时失败。)

最重要的是,每个 View v 都有一个关联的复合数据类型 v 和数组类型 v[],可以用作表中列的类型,或者函数的参数/返回值,CASCADE 也会选择这些。

这扩展到包含某些值表达式的每个对象定义,因为它可能包含对此类型的强制转换:列默认值、类型默认值、触发条件、RLS 策略、索引表达式和检查约束。如果它们引用 View 的 OID ('v'::regclass) 或类型 ('v'::regtype 'v[]'::regtype)。

当然,从那里开始它会不断层叠,因此可以通过DROP VIEW取出的对象类型列表变得相当长。

但是除了文档中提到的情况之外,我怀疑您正在做这些事情;他们决定不详细说明我并不感到惊讶......

关于postgresql - 哪些对象可以通过 DROP VIEW CASCADE 删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46338722/

相关文章:

php - Zend Framework 2 设置全局模块变量

java - 当显示 AlertDialog 时,自定义 View onMeasure(...) 宽度和高度为 0

android - View 已移动但仍在左上角

postgresql - postgres CTE 中的多个更新语句

postgresql - SQL优化数据库结构: NOAA Data

postgresql - 如果不存在则插入,否则在 postgresql 中返回 id

Extjs4 MVC,如何从Controller类获取模型或 View ?

python - SqlAlchemy 在查询中使用 PostgreSQL timestamptz "AT TIMEZONE"

java - 监控 JDBC 调用

ios - iOS 8 的 View Controller frame.height 和 frame.width 被交换