

# `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-barrier 属性。
+ `security_invoker (boolean)`：更改视图的 security-invoker 属性。

**`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 扩展。