當使用DROP VIEW xxx CASCADE
時,除了其他視圖之外是否還有其他對象可以刪除?哪些對象可以通過刪除查看CASCADE刪除
Documentation沒有說明太多:
CASCADE
自動刪除依賴於視圖(如其他視圖)的對象,
當使用DROP VIEW xxx CASCADE
時,除了其他視圖之外是否還有其他對象可以刪除?哪些對象可以通過刪除查看CASCADE刪除
Documentation沒有說明太多:
CASCADE
自動刪除依賴於視圖(如其他視圖)的對象,
內有一個巨大可能被丟棄的對象類型數量,但您很可能遇到的數量很少。
視圖可能被其他視圖,物化視圖或規則直接引用。 (從函數內的提及並不跟蹤,所以CASCADE
不會接他們;他們就會失敗在運行時)
最重要的是,每一個視圖v
具有相關聯的數據類型的複合和v
陣列型v[]
,它可以用作表格中列的類型,或函數的參數/返回值,而且CASCADE
也會選擇它們。
這延伸到每包含某個值表達式的對象定義,因爲它可能包含對此類型的轉換:列默認值,類型默認值,觸發條件,RLS策略,索引表達式和檢查約束。如果他們引用視圖的OID('v'::regclass
)或類型('v'::regtype
和'v[]'::regtype
),它們也將被丟棄。
當然,從那裏它保持級聯,所以可以由DROP VIEW
取出的對象類型的列表變得相當長。
但是除了文檔中提到的情況,我懷疑你正在做這些事情;我並不感到驚訝,他們決定不詳細說明......
也許是一個運行視圖的函數。您可以檢查依賴於視圖的對象,只需運行「drop view xxx」,並且如果有任何依賴對象,它會投訴它並列出所有依賴對象。 –
更多信息位於鏈接部分:https://www.postgresql.org/docs/current/static/ddl-depend.html我想找出最簡單的方法是運行'drop' _without_ cascade並閱讀該錯誤消息(如手冊中所建議的) –
@a_horse_with_no_name但在那裏它不能解釋什麼對象可以依賴於視圖 – alostale