
# 修改视图
#### 功能描述
ALTER VIEW语句用于修改视图的元数据，包括重命名视图、设置/删除视图属性。
#### 语法
- 重命名视图
  ![](https://support.huaweicloud.com/sqlref-spark-aidatalake/public_sys-resources/caution_3.0-zh-cn.png)
  Iceberg、Lance和Hive表不支持修改视图名称。
  ```
  ALTER VIEW view_identifier RENAME TO view_identifier
  ```
  
- 设置视图属性
  ```
  ALTER VIEW view_identifier SET TBLPROPERTIES ( property_key = property_val [, ...] )
  ```
  
- 删除视图属性
  ```
  ALTER VIEW view_identifier UNSET TBLPROPERTIES [ IF EXISTS ] ( property_key [, ...] )
  ```
  
 
#### 参数说明
| 参数                  | 描述                                        |
|:---|:---|
| view_identifier     | 视图名称，可使用 database_name.view_name 限定。      |
| RENAME TO           | 重命名视图。源数据库和目标数据库必须相同，不支持跨数据库移动视图。         |
| SET TBLPROPERTIES   | 设置视图属性。如果属性键已存在，则替换值；如果不存在，则添加。           |
| UNSET TBLPROPERTIES | 删除视图属性。如果指定 IF EXISTS，属性不存在时不报错。          |
| property_key        | 属性键名，可由多个以点分隔的部分组成，如 key_part1.key_part2。 |
   
#### 示例
重命名视图
```
ALTER VIEW tempdb1.v1 RENAME TO tempdb1.v2;
```
设置视图属性
```
ALTER VIEW tempdb1.v2 SET TBLPROPERTIES ('created.by.user' = 'John', 'created.date' = '01-01-2001');
```
删除视图属性
```
-- 删除已有属性 
ALTER VIEW tempdb1.v2 UNSET TBLPROPERTIES ('created.by.user', 'created.date');  
-- 使用IF EXISTS避免属性不存在时报错 
ALTER VIEW tempdb1.v2 UNSET TBLPROPERTIES IF EXISTS ('non-existent');
```
#### 注意事项
- ALTER VIEW仅修改视图的元数据，不会影响底层数据。
- 重命名视图时，如果新视图名已存在，会抛出 TableAlreadyExistsException。
- 重命名视图会清除该视图及其依赖项的缓存数据。
- ALTER VIEW不支持 SET SERDE 或 SET SERDEPROPERTIES。
- WITH SCHEMA不支持TEMPORARY视图。
 
