

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

# `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 [, ... ] )
```

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

`ALTER VIEW` 會變更檢視的各種輔助屬性。（如果您想要修改檢視的定義查詢，請使用 `CREATE OR REPLACE VIEW`。) 您必須擁有檢視才能使用 `ALTER VIEW`。若要變更檢視的結構描述，您還必須具備新結構描述的 `CREATE` 權限。若要變更擁有者，您必須能夠對新的擁有角色使用 `SET ROLE`，且該角色必須具有檢視結構描述的 `CREATE` 權限。

## Parameters
<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 擴充功能。