本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從資料庫移除檢視。使用單一 DROP VIEW 命令即可捨棄多個檢視。此命令無法還原。
所需權限
以下是 DROP VIEW 所需的權限:
-
超級使用者
-
具有 DROP VIEW 權限的使用者
-
檢視擁有者
語法
DROP VIEW [ IF EXISTS ] name [, ... ] [ CASCADE | RESTRICT ]
參數
- IF EXISTS
-
此子句會指出,若指定的檢視不存在,則命令不應進行任何變更,且應傳回檢視不存在的訊息,而不是在發生錯誤的情況下終止。
此子句在編寫指令碼時很實用,如此指令碼就不會因為 DROP VIEW 對不存在的檢視執行而失敗。
- name
-
要移除的檢視名稱。
- CASCADE
-
此子句指出,自動捨棄取決於檢視的物件,例如其他檢視。
若要建立不相依於其他資料庫物件的檢視,例如檢視和資料表,請在檢視定義中包含 WITH NO SCHEMA BINDING 子句。如需詳細資訊,請參閱CREATE VIEW。
請注意,如果您包含 CASCADE,且捨棄的資料庫物件計數執行到十個或更多,則資料庫用戶端可能不會在摘要結果中列出所有捨棄的物件。這通常是因為 SQL 用戶端工具對傳回的結果具有預設限制。
- RESTRICT
-
此子句指出,若有任何物件相依於檢視,則不捨棄檢視。這是預設動作。
範例
下列範例會捨棄名為 event 的檢視:
drop view event;
若要移除有相依性的檢視,請使用 CASCADE 選項。例如,假設我們有名為 EVENT 的資料表。然後使用 CREATE VIEW 命令建立 EVENT 資料表的 eventview 檢視,如下列範例所示:
create view eventview as
select dateid, eventname, catid
from event where catid = 1;
現在我們建立另一個檢視,名為 myeventview,這是根據第一個檢視 eventview 所建立:
create view myeventview as
select eventname, catid
from eventview where eventname <> ' ';
此時已建立兩個檢視:eventview 和 myeventview。
myeventview 檢視是子檢視,eventview 是其父檢視。
若要刪除 eventview 檢視,明顯可使用下列命令:
drop view eventview;
請注意,如果您在此情況下執行此命令,將會收到下列錯誤:
drop view eventview;
ERROR: can't drop view eventview because other objects depend on it
HINT: Use DROP ... CASCADE to drop the dependent objects too.
若要解決此情況,請執行下列命令 (如錯誤訊息中所建議):
drop view eventview cascade;
eventview 和 myeventview 現在都已成功捨棄。
下列範例會捨棄 eventview 檢視 (如存在的話),或不執行任何動作,並於檢視不存在時傳回訊息:
drop view if exists eventview;