使用DROP VIEW xxx CASCADE
时,除了其他视图之外,还有其他任何可以删除的对象吗?
Documentation并未澄清太多:
CASCADE
自动删除依赖于视图的对象(例如其他视图),
答案 0 :(得分:1)
有大量的可以删除的对象类型,但很少有你可能会遇到的对象类型。
视图可能会被其他视图,物化视图或规则直接引用。 (函数内部的引用未被跟踪,因此CASCADE
不会接受它们;它们只会在运行时失败。)
最重要的是,每个视图v
都有一个关联的复合数据类型v
和数组类型v[]
,它们可以用作表中列的类型,或者参数/函数的返回,CASCADE
也会选择它们。
这扩展到包含某个值表达式的每个对象定义,因为它可能包含此类型的强制转换:列默认值,类型默认值,触发条件,RLS策略,索引表达式和检查约束。如果它们引用视图的OID('v'::regclass
)或类型('v'::regtype
和'v[]'::regtype
),它们也会被删除。
当然,从那里它会保持级联,所以DROP VIEW
可以取出的对象类型列表会很长。
但除了文档中提到的案例外,我怀疑你是否正在做这些事情;他们决定不详细说明我并不感到惊讶......