描述
ALTER VIEW 语句可以修改与视图关联的元数据。它可以更改视图的定义、将视图名称更改为不同的名称,以及通过设置 TBLPROPERTIES 来设置和取消设置视图的元数据。重命名视图(RENAME View)
重命名现有视图。如果新视图名称在源数据库中已存在,将抛出
TableAlreadyExistsException。此操作不支持跨数据库移动视图。如果视图已被缓存,该命令会清除视图及其所有引用依赖项的缓存数据。视图的缓存将在下次访问时延迟填充。该命令会将视图的依赖项置为未缓存状态。
语法
ALTER VIEW view_identifier RENAME TO view_identifier
参数
参数 | 说明 | 语法 |
view_identifier | 指定视图名称,可以选择性地用数据库名进行限定 | [ database_name. ] view_name |
设置视图属性(SET View Properties)
设置现有视图的一个或多个属性。属性是键值对。如果属性的键已存在,值将被新值替换。如果属性的键不存在,键值对将被添加到属性中。
语法
ALTER VIEW view_identifier SET TBLPROPERTIES ( property_key = property_val [ , ... ] )
取消设置视图属性(UNSET View Properties)
删除现有视图的一个或多个属性。如果指定的键不存在,将抛出异常。使用
IF EXISTS 可避免异常。语法
ALTER VIEW view_identifier UNSET TBLPROPERTIES [ IF EXISTS ] ( property_key [ , ... ] )
修改视图定义(ALTER View AS SELECT)
ALTER VIEW view_identifier AS SELECT 语句用于更改视图的定义。SELECT 语句必须有效,且 view_identifier 必须存在。注意:
ALTER VIEW 语句不支持 SET SERDE 或 SET SERDEPROPERTIES 属性。语法
ALTER VIEW view_identifier AS select_statement
示例
-- 创建独立数据库和基础表CREATE DATABASE tempdb_view_test;USE tempdb_view_test;CREATE EXTERNAL TABLE base_table (c1 INT, c2 STRING)USING PARQUET LOCATION 'cosn://<your_bucket_name>/test_alter_view/base_table';CREATE VIEW v1 AS SELECT c1, c2 FROM base_table;-- 重命名视图ALTER VIEW v1 RENAME TO v2;-- 验证视图DESCRIBE TABLE EXTENDED v2;-- 设置视图属性ALTER VIEW v2 SET TBLPROPERTIES ('created.by.user' = 'John', 'created.date' = '01-01-2001');-- 验证属性DESCRIBE TABLE EXTENDED v2;-- 取消设置视图属性ALTER VIEW v2 UNSET TBLPROPERTIES ('created.by.user', 'created.date');ALTER VIEW v2 UNSET TBLPROPERTIES IF EXISTS ('nonexistent_key');-- 修改视图定义ALTER VIEW v2 AS SELECT c1 FROM base_table WHERE c1 > 0;-- 验证新定义DESCRIBE TABLE EXTENDED v2;-- 切回默认数据库USE default;