ALTER VIEW

更改与视图关联的元数据。 它可以更改视图的定义、对视图重命名,还可通过设置 TBLPROPERTIES 来设置和取消设置视图的元数据。

RENAME

重命名现有视图。 如果源数据库中已存在新视图名称,则会引发 TableAlreadyExistsException。 此操作不支持跨数据库移动视图。

如果缓存视图,该命令将清除视图的缓存数据及其引用它的所有依赖项。 下次访问视图时,将延迟填充视图的缓存。 该命令将视图的依赖关系保留为未ached。

语法

ALTER VIEW view_identifier RENAME TO view_identifier

参数

  • view_identifier

    视图名称,可选择使用数据库名称进行限定。

    语法:

SET

设置现有视图的一个或多个属性。 这些属性是键值对。 如果属性的键存在,则对应的值将替换为新的值。 如果属性的键不存在,则键值对将被添加到属性中。

语法

ALTER VIEW view_identifier SET TBLPROPERTIES ( property_key = property_val [ , ... ] )

参数

  • view_identifier

    视图名称,可选择使用数据库名称进行限定。

    语法:

  • property_key

    属性键。 该键可以包含由点分隔的多个部分。

    语法:

UNSET 视图属性

删除现有视图的一个或多个属性。 如果指定的键不存在,会引发异常。 请使用 IF EXISTS 来避免出现异常。

语法

ALTER VIEW view_identifier UNSET TBLPROPERTIES [ IF EXISTS ]  ( property_key [ , ... ] )

参数

  • view_identifier

    视图名称,可选择使用数据库名称进行限定。

    语法:

  • property_key

    属性键。 该键可以包含由点分隔的多个部分。

    语法:

ALTER VIEW AS SELECT

更改视图的定义。 SELECT 语句必须有效,且 view_identifier 必须存在。

语法

ALTER VIEW view_identifier AS select_statement

ALTER VIEW 语句不支持 SET SERDESET SERDEPROPERTIES 属性。

参数

  • view_identifier

    视图名称,可选择使用数据库名称进行限定。

    语法:

  • select_statement

    视图的定义。 有关详细信息,请参阅 SELECT

示例

-- Rename only changes the view name.
-- The source and target databases of the view have to be the same.
-- Use qualified or unqualified name for the source and target view.
ALTER VIEW tempdb1.v1 RENAME TO tempdb1.v2;

-- Verify that the new view is created.
DESCRIBE TABLE EXTENDED tempdb1.v2;
+----------------------------+----------+-------+
|                    col_name|data_type |comment|
+----------------------------+----------+-------+
|                          c1|       int|   null|
|                          c2|    string|   null|
|                            |          |       |
|# Detailed Table Information|          |       |
|                    Database|   tempdb1|       |
|                       Table|        v2|       |
+----------------------------+----------+-------+

-- Before ALTER VIEW SET TBLPROPERTIES
DESC TABLE EXTENDED tempdb1.v2;
+----------------------------+----------+-------+
|                    col_name| data_type|comment|
+----------------------------+----------+-------+
|                          c1|       int|   null|
|                          c2|    string|   null|
|                            |          |       |
|# Detailed Table Information|          |       |
|                    Database|   tempdb1|       |
|                       Table|        v2|       |
|            Table Properties|    [....]|       |
+----------------------------+----------+-------+

-- Set properties in TBLPROPERTIES
ALTER VIEW tempdb1.v2 SET TBLPROPERTIES ('created.by.user' = "John", 'created.date' = '01-01-2001' );

-- Use `DESCRIBE TABLE EXTENDED tempdb1.v2` to verify
DESC TABLE EXTENDED tempdb1.v2;
+----------------------------+-----------------------------------------------------+-------+
|                    col_name|                                            data_type|comment|
+----------------------------+-----------------------------------------------------+-------+
|                          c1|                                                  int|   null|
|                          c2|                                               string|   null|
|                            |                                                     |       |
|# Detailed Table Information|                                                     |       |
|                    Database|                                              tempdb1|       |
|                       Table|                                                   v2|       |
|            Table Properties|[created.by.user=John, created.date=01-01-2001, ....]|       |
+----------------------------+-----------------------------------------------------+-------+

-- Remove the key `created.by.user` and `created.date` from `TBLPROPERTIES`
ALTER VIEW tempdb1.v2 UNSET TBLPROPERTIES ('created.by.user', 'created.date');

--Use `DESC TABLE EXTENDED tempdb1.v2` to verify the changes
DESC TABLE EXTENDED tempdb1.v2;
+----------------------------+----------+-------+
|                    col_name| data_type|comment|
+----------------------------+----------+-------+
|                          c1|       int|   null|
|                          c2|    string|   null|
|                            |          |       |
|# Detailed Table Information|          |       |
|                    Database|   tempdb1|       |
|                       Table|        v2|       |
|            Table Properties|    [....]|       |
+----------------------------+----------+-------+

-- Change the view definition
ALTER VIEW tempdb1.v2 AS SELECT * FROM tempdb1.v1;

-- Use `DESC TABLE EXTENDED` to verify
DESC TABLE EXTENDED tempdb1.v2;
+----------------------------+---------------------------+-------+
|                    col_name|                  data_type|comment|
+----------------------------+---------------------------+-------+
|                          c1|                        int|   null|
|                          c2|                     string|   null|
|                            |                           |       |
|# Detailed Table Information|                           |       |
|                    Database|                    tempdb1|       |
|                       Table|                         v2|       |
|                        Type|                       VIEW|       |
|                   View Text|   select * from tempdb1.v1|       |
|          View Original Text|   select * from tempdb1.v1|       |
+----------------------------+---------------------------+-------+