华为云云数据库GaussDBALTER 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;

相关链接

CREATE VIEW,DROP VIEW

父主题: SQL语法

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家