DROP VIEW
データベースからビューを削除します。1 つの 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 を含めることで、データベースオブジェクトの削除数が 10 以上になった場合、データベースクライアントはすべての削除されたオブジェクトをサマリー結果に一覧表示しない可能性があることに注意してください。この原因は、通常、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 という 2 つ目のビューを作成します。このビューは、最初のビュー eventview に基づいています。
create view myeventview as
select eventname, catid
from eventview where eventname <> ' ';
この時点で、eventview および myeventview という 2 つのビューが作成されています。
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;