

# `ALTER VIEW`
<a name="alter-view-syntax-support"></a>

`ALTER VIEW` ステートメントは、既存のビューのさまざまなプロパティの変更を許可し、Aurora DSQL はこのコマンドのすべての PostgreSQL 構文をサポートします。

## サポートされている構文
<a name="alter-view-supported-syntax"></a>

```
ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT
ALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER VIEW [ IF EXISTS ] name RENAME [ COLUMN ] column_name TO new_column_name
ALTER VIEW [ IF EXISTS ] name RENAME TO new_name
ALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema
ALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )
ALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )
```

## 説明
<a name="alter-view-description"></a>

`ALTER VIEW` は、ビューの各種補助プロパティを変更します。(ビューを定義するクエリを変更する場合は、`CREATE OR REPLACE VIEW` を使用します。) `ALTER VIEW` を使用するには、ビューを所有している必要があります。ビューのスキーマを変更するには、新しいスキーマに対する `CREATE` 権限も必要です。所有者を変更するには、新しい所有者ロールに対して `SET ROLE` ができなければなりません。また、そのロールにはビューのスキーマに対する `CREATE` 権限が必要です。

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

**`name`**  
既存のビューの名前 (オプションでスキーマ修飾可) です。

**`column_name`**  
既存の列の名前、または既存の列の新しい名前。

**`IF EXISTS`**  
ビューが存在しなかったとしてもエラーになりません。この場合、通知が発行されます。

**`SET/DROP DEFAULT`**  
これらのフォームは、列のデフォルト値を設定または削除します。ビュー列のデフォルト値は、ビューを対象とした任意の `INSERT` または `UPDATE` コマンドに代入されます。

**`new_owner`**  
ビューの新しい所有者のユーザー名です。

**`new_name`**  
ビューの新しい名前です。

**`new_schema`**  
ビューの新しいスキーマです。

**`SET ( view_option_name [= view_option_value] [, ... ] )`**  
ビューのオプションを設定します。サポートされているオプションは以下のとおりです。  
+ `check_option (enum)` – ビューのチェックオプションを変更します。値は `local` または `cascaded` である必要があります。
+ `security_barrier (boolean)` – ビューのセキュリティバリアプロパティを変更します。
+ `security_invoker (boolean)` – ビューのセキュリティ呼び出しプロパティを変更します。

**`RESET ( view_option_name [, ... ] )`**  
ビューのオプションをデフォルト値にリセットします。

## 例
<a name="alter-view-examples"></a>

ビュー `foo` の名前を `bar` に変更します。

```
ALTER VIEW foo RENAME TO bar;
```

更新可能なビューにデフォルトの列値を付与します。

```
CREATE TABLE base_table (id int, ts timestamptz);
CREATE VIEW a_view AS SELECT * FROM base_table;
ALTER VIEW a_view ALTER COLUMN ts SET DEFAULT now();
INSERT INTO base_table(id) VALUES(1);  -- ts will receive a NULL
INSERT INTO a_view(id) VALUES(2);  -- ts will receive the current time
```

## 互換性
<a name="alter-view-compatibility"></a>

`ALTER VIEW` は、Aurora DSQL がサポートする SQL 標準の PostgreSQL 拡張です。