メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

DROP VIEW

データベースからビューを削除します。1 つの DROP VIEW コマンドで複数のビューを削除できます。このコマンドを元に戻すことはできません。

構文

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

パラメーター

IF EXISTS

指定されたビューが存在しない場合、コマンドはエラーで終了するのではなく、何も変更しないで、ビューが存在しないというメッセージを返すことを示す句。

この句は、存在しないビューに対して DROP VIEW を実行してもスクリプトが失敗しないため、スクリプトを作成する際に便利です。

name

削除するビューの名前。

CASCADE

その他のビューなど、ビューに依存するオブジェクトを自動的に削除することを示す句。

RESTRICT

ビューに依存するオブジェクトがある場合、ビューを削除しないことを示す句。この動作がデフォルトです。

次の例は、event というビューを削除します。

Copy
drop view event;

依存するオブジェクトがあるビューを削除するには、CASCADE オプションを使用します。たとえば、EVENT というテーブルを使用するとします。次に、以下の例に示すように、CREATE VIEW コマンドを使用して、EVENT テーブルの eventview ビューを作成します。

Copy
create view eventview as select dateid, eventname, catid from event where catid = 1;

ここで myeventview という 2 つ目のビューを作成します。このビューは、最初のビュー eventview に基づいています。

Copy
create view myeventview as select eventname, catid from eventview where eventname <> ' ';

この時点で、eventviewmyeventview という 2 つのビューが作成されています。

myeventview ビューは、親として eventview を持つ子ビューです。

eventview ビューを削除するために使用するコマンドは、明らかに次のコマンドです。

Copy
drop view eventview;

しかしこの場合、このコマンドを実行すると、次のエラーが返されます。

Copy
drop view eventview; ERROR: cannot drop view eventview because other objects depend on it HINT: Use DROP ... CASCADE to drop the dependent objects too.

この問題を回避するために、 (エラーメッセージの指示に従って) 次のコマンドを実行します。

Copy
drop view eventview cascade;

今度は eventviewmyeventview の両方が正常に削除されました。

次の例では、eventview ビューが存在する場合は削除し、存在しない場合は何もしないでメッセージを返します。

Copy
drop view if exists eventview;

このページの内容: