更新时间:2024-05-07 GMT+08:00
ALTER VIEW
功能描述
ALTER VIEW更改视图的各种辅助属性。(如果用户是更改视图的查询定义,要使用CREATE OR REPLACE VIEW。)
注意事项
只有视图的所有者或者被授予了视图ALTER权限的用户才可以执行ALTER VIEW命令,系统管理员默认拥有该权限。针对所要修改属性的不同,对其还有以下权限约束:
- 修改视图的模式,当前用户必须是视图的所有者或者系统管理员,且要有新模式的CREATE权限。
- 修改视图的所有者,当前用户必须是视图的所有者或者系统管理员,且该用户必须是新所有者角色的成员,并且此角色必须有视图所在模式的CREATE权限。
- 禁止修改视图中列的类型。
语法格式
- 设置视图列的默认值。
1 2
ALTER VIEW [ IF EXISTS ] view_name ALTER [ COLUMN ] column_name SET DEFAULT expression;
- 取消列视图列的默认值。
1 2
ALTER VIEW [ IF EXISTS ] view_name ALTER [ COLUMN ] column_name DROP DEFAULT;
- 修改视图的所有者。
1 2
ALTER VIEW [ IF EXISTS ] view_name OWNER TO new_owner;
- 重命名视图。
1 2
ALTER VIEW [ IF EXISTS ] view_name RENAME TO new_name;
- 设置视图的所属模式。
1 2
ALTER VIEW [ IF EXISTS ] view_name SET SCHEMA new_schema;
- 设置视图的选项。
1 2
ALTER VIEW [ IF EXISTS ] view_name SET ( { view_option_name [ = view_option_value ] } [, ... ] );
- 重置视图的选项。
1 2
ALTER VIEW [ IF EXISTS ] view_name RESET ( view_option_name [, ... ] );
参数说明
- IF EXISTS
使用这个选项,如果视图不存在时不会产生错误,仅有会有一个提示信息。
- view_name
视图名称,可以用模式修饰。
取值范围:字符串,符合标识符命名规范。
- column_name
可选的名称列表,视图的字段名。如果没有给出,字段名取自查询中的字段名。
取值范围:字符串,符合标识符命名规范。
- SET/DROP DEFAULT
设置或删除一个列的缺省值,该参数暂无实际意义。
- new_owner
视图新所有者的用户名称。
- new_name
视图的新名称。
- new_schema
视图的新模式。
- view_option_name [ = view_option_value ]
该子句为视图指定一个可选的参数。
- security_barrier:设置视图是否提供行级安全。取值范围为Boolean类型。缺省值为true。
- expression
常量、函数或SQL表达式。
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
--创建SCHEMA。 gaussdb=# CREATE SCHEMA tpcds; --创建表tpcds.customer。 gaussdb=# CREATE TABLE tpcds.customer ( c_customer_sk INTEGER NOT NULL, c_customer_id CHARACTER(16) NOT NULL ); --向表中插入多条记录。 gaussdb=# INSERT INTO tpcds.customer VALUES (1, 'AAAAAAAABAAAAAAA'),(100, 'AAAAAAAACAAAAAAA'),(150, 'AAAAAAAADAAAAAAA'); --创建一个由c_customer_sk小于150的内容组成的视图。 gaussdb=# CREATE VIEW tpcds.customer_details_view_v1 AS SELECT * FROM tpcds.customer WHERE c_customer_sk < 150; --修改视图名称。 gaussdb=# ALTER VIEW tpcds.customer_details_view_v1 RENAME TO customer_details_view_v2; --修改视图所属schema。 gaussdb=# ALTER VIEW tpcds.customer_details_view_v2 SET schema public; --删除视图。 gaussdb=# DROP VIEW public.customer_details_view_v2; --删除表tpcds.customer。 gaussdb=# DROP TABLE tpcds.customer; --删除SCHEMA。 gaussdb=# DROP SCHEMA tpcds CASCADE; |
相关链接
父主题: SQL语法