2016-12-27 100 views
1

是否有一個標準的SQL命令,當一個表被刪除時,它也刪除所有的視圖?SQL:當表被刪除時刪除視圖

+1

哪個數據庫?標記它 – GurV

+0

@GurwinderSingh沒有特定的數據庫,我知道如何在每個數據庫類型中做到這一點,但我試圖找到一種適用於所有數據庫的方式,這就是爲什麼我說「標準SQL命令」:) – m2008m1033m

+0

唯一方法我可以看到這樣做的目的是構建一個接受作爲輸入的表名和數據庫的過程,然後循環查看該表的每個視圖的依賴關係,如果找到該視圖,則會刪除該視圖。由於每個數據庫都實現了自己的依賴列表方法,因此必須編寫特定於每個數據庫的邏輯。我個人看不到其他方式。 – xQbert

回答

2

不,沒有標準的方法來刪除表和所有相關的視圖。我知道Postgres有一個CASCADE選項,但這是特定於實現 - MySQL接受CASCADE但是完全沒有。

2

跨所有rdms沒有標準化的命令,將在一次操作中刪除一個表和它的界限視圖。

+1

這是錯誤的。在Postgres中,你可以使用'cascade'選項來刪除視圖 –

+0

你是對的。我更新了答案,注意到沒有標準化的命令。這是帶有CASCADE選項的Postgres放置命令。 https://www.postgresql.org/docs/9.1/static/sql-droptable.html –