ALTER VIEW
功能描述
ALTER VIEW更改视图的各种辅助属性。(如果用户是更改视图的查询定义,要使用CREATE OR REPLACE VIEW)。
注意事项
- 修改视图的模式,当前用户必须是视图的所有者或者系统管理员,且要有新模式的CREATE权限。三权分立开关打开时,系统管理员不能修改视图模式。0
- 修改视图的所有者,当前用户必须是视图的所有者或者系统管理员,且该用户必须是新所有者角色的成员,并且此角色必须有视图所在模式的CREATE权限。三权分立开关打开时,系统管理员不能修改视图的所有者。
- 禁止修改视图中列的类型。
语法格式
- 设置视图列的默认值。
ALTER VIEW [ IF EXISTS ] view_name ALTER [ COLUMN ] column_name SET DEFAULT expression; - 取消列视图列的默认值。
ALTER VIEW [ IF EXISTS ] view_name ALTER [ COLUMN ] column_name DROP DEFAULT; - 修改视图的所有者。
ALTER VIEW [ IF EXISTS ] view_name OWNER TO new_owner; - 重命名视图。
ALTER VIEW [ IF EXISTS ] view_name RENAME TO new_name; - 设置视图的所属模式。
ALTER VIEW [ IF EXISTS ] view_name SET SCHEMA new_schema;
参数说明
- IF EXISTS
使用这个选项,如果视图不存在时不会产生错误,仅有会有一个提示信息。
- view_name
视图名称,可以用模式修饰。
取值范围:字符串,已经存在的视图名。
- column_name
字段名称。
取值范围:字符串,已经存在的视图字段名。
- SET/DROP DEFAULT
设置或删除一个列的缺省值,该参数暂无实际意义。
- new_owner
视图新所有者的用户名称,用户名要求详见•user_name。
- new_name
视图的新名称。
- new_schema
视图的新模式。
- expression
常量、函数或SQL表达式。
示例
- 重命名视图。
--创建test_tbl表。 m_db=# CREATE TABLE test_tb1(col1 INT,col2 INT); --创建视图。 m_db=# CREATE VIEW abc AS SELECT * FROM test_tb1; --重命名视图。 m_db=# ALTER VIEW IF EXISTS abc RENAME TO test_v1; --查看视图。 m_db=# \dv List of relations Schema | Name | Type | Owner | Storage --------+---------+------+-------+--------- public | test_v1 | view | omm | (1 row) - 修改视图所有者。
--创建用户。 m_db=# CREATE ROLE role_test PASSWORD '********'; --修改视图所有者。 m_db=# ALTER VIEW IF EXISTS test_v1 OWNER TO role_test; --查看视图信息。 m_db=# \dv List of relations Schema | Name | Type | Owner | Storage --------+---------+------+-----------+--------- public | test_v1 | view | role_test | (1 row) - 设置视图所属模式。
--创建模式。 m_db=# CREATE SCHEMA tcpds; --修改视图所属模式。 m_db=# ALTER VIEW test_v1 SET SCHEMA tcpds; --查看视图信息。 m_db=# \dv tcpds.test_v1; List of relations Schema | Name | Type | Owner | Storage --------+---------+------+-----------+--------- tcpds | test_v1 | view | role_test | (1 row)