使用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/