DROP VIEW - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

DROP VIEW

從資料庫移除檢視。使用單一 DROP VIEW 命令即可捨棄多個檢視。此命令無法還原。

必要的權限

以下是「刪除視圖」所需的權限:

  • 超級使用者

  • 具有「刪除視圖」權限的用户

  • VIEW 擁有者

Syntax (語法)

DROP VIEW [ IF EXISTS ] name [, ... ] [ CASCADE | RESTRICT ]

參數

IF EXISTS

此子句會指出,若指定的檢視不存在,則命令不應進行任何變更,且應傳回檢視不存在的訊息,而不是在發生錯誤的情況下終止。

此子句在編寫指令碼時很實用,如此指令碼就不會因為 DROP VIEW 對不存在的檢視執行而失敗。

name

要移除的檢視名稱。

CASCADE

此子句指出,自動捨棄取決於檢視的物件,例如其他檢視。

若要建立不相依於其他資料庫物件的檢視,例如檢視和資料表,請在檢視定義中包含 WITH NO SCHEMA BINDING 子句。如需詳細資訊,請參閱 CREATE VIEW

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 <> ' ';

此時已建立兩個檢視:eventviewmyeventview

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;

eventviewmyeventview 現在都已成功捨棄。

下面的示例可以刪除事件視圖視圖,或不執行任何動作,並於資料表不存在時傳回訊息:

drop view if exists eventview;