

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# DROP VIEW
<a name="r_DROP_VIEW"></a>

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

## 必要な権限
<a name="r_DROP_VIEW-privileges"></a>

DROP VIEW に必要な権限を以下に示します。
+ スーパーユーザー
+ DROP VIEW の権限を持つユーザー
+ ビューの所有者

## 構文
<a name="r_DROP_VIEW-synopsis"></a>

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

## パラメータ
<a name="r_DROP_VIEW-parameters"></a>

IF EXISTS  
指定されたビューが存在しない場合、コマンドはエラーで終了するのではなく、何も変更しないで、ビューが存在しないというメッセージを返すことを示す句。  
この句は、存在しないビューに対して DROP VIEW を実行してもスクリプトが失敗しないため、スクリプトを作成する際に便利です。

 *.name*   
削除するビューの名前。

CASCADE  
その他のビューなど、ビューに依存するオブジェクトを自動的に削除することを示す句。  
ビューやテーブルなど、他のデータベースオブジェクトに依存しないビューを作成するには、ビュー定義に WITH NO SCHEMA BINDING 句を含めます。詳細については、「[CREATE VIEW](r_CREATE_VIEW.md)」を参照してください。  
CASCADE を含めることで、データベースオブジェクトの削除数が 10 以上になった場合、データベースクライアントはすべての削除されたオブジェクトをサマリー結果に一覧表示しない可能性があることに注意してください。この原因は、通常、SQL クライアントツールには、返される結果に対するデフォルトの制限があるためです。

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

## 例
<a name="r_DROP_VIEW-examples"></a>

次の例では、*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;
```