更新时间:2024-08-20 GMT+08:00

CREATE RESOURCE LABEL

功能描述

CREATE RESOURCE LABEL语句用于创建资源标签。

注意事项

只有POLADMIN、SYSADMIN或初始用户能正常执行此操作。

语法格式

1
CREATE RESOURCE LABEL [IF NOT EXISTS] label_name ADD label_item_list[, ...];

  • label_item_list:
    1
    resource_type(resource_path[, ...])
    

  • resource_type:
    { TABLE | COLUMN | SCHEMA | VIEW | FUNCTION }

参数说明

  • IF NOT EXISTS

    如果已经存在相同名称的资源标签,不会抛出错误,而是发出一个通知,告知此资源标签已存在。

  • label_name

    资源标签名称,创建时要求不能与已有标签重名。

    取值范围:字符串,要符合标识符命名规范且最大长度不超过63个字符。若超过63个字符,数据库会截断并保留前63个字符当做资源标签名称。当资源标签名称中包含大写字母时数据库会自动转换为小写字母,如果需要创建包含大写字母的资源标签名称则需要使用双引号括起来。

    标识符需要为小写字母(a-z)、大写字母(A-Z)、下划线(_)、数字(0~9)或美元符号($),且必须以字母或下划线开头。

  • resource_type

    指的是要标记的数据库资源的类型。

    取值范围:表(TABLE)、列(COLUMN)、模式(SCHEMA)、视图(VIEW)、函数(FUNCTION)。

  • resource_path

    指的是描述具体的数据库资源的路径。

示例

 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
--创建一个表tb_for_label。
gaussdb=# CREATE TABLE tb_for_label(col1 text, col2 text, col3 text);

--基于表创建资源标签。
gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS table_label add TABLE(public.tb_for_label);

--再次创建已存在的表资源标签,对比加参数IF NOT EXISTS与不加IF NOT EXISTS参数的区别。
gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS table_label add TABLE(public.tb_for_label);
NOTICE:  table_label label already defined, skipping
CREATE RESOURCE LABEL
gaussdb=# CREATE RESOURCE LABEL table_label add TABLE(public.tb_for_label);
ERROR:  table_label label already defined

--基于列创建资源标签。
gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS column_label add COLUMN(public.tb_for_label.col1);

--创建一个模式schema_for_label。
gaussdb=# CREATE SCHEMA schema_for_label;

--基于模式创建资源标签。
gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS schema_label add SCHEMA(schema_for_label);

--创建一个视图view_for_label。
gaussdb=# CREATE VIEW view_for_label AS SELECT 1;

--基于视图创建资源标签。
gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS view_label add VIEW(view_for_label);

--创建一个函数func_for_label。
gaussdb=# CREATE FUNCTION func_for_label RETURNS TEXT AS $$ SELECT col1 FROM tb_for_label; $$ LANGUAGE SQL;

--基于函数创建资源标签。
gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS func_label add FUNCTION(func_for_label);

--删除表资源标签table_label。
gaussdb=# DROP RESOURCE LABEL IF EXISTS table_label; 

--删除列资源资源标签column_label。
gaussdb=# DROP RESOURCE LABEL IF EXISTS column_label;

--删除函数资源标签func_for_label。
gaussdb=# DROP FUNCTION func_for_label;

--删除视图资源标签view_for_label。
gaussdb=# DROP VIEW view_for_label;

--删除模式资源标签schema_for_label。
gaussdb=# DROP SCHEMA schema_for_label;

--删除表tb_for_label。
gaussdb=# DROP TABLE tb_for_label;