CREATE TAG

创建新标签或替换系统中的现有标签。

该命令支持以下变体:

另请参阅:

ALTER TAGSHOW TAGSDROP TAGUNDROP TAG

语法

CREATE [ OR REPLACE ] TAG [ IF NOT EXISTS ] <name>
    [ ALLOWED_VALUES '<val_1>' [ , '<val_2>' [ , ... ] ] ]
    [ PROPAGATE = { ON_DEPENDENCY_AND_DATA_MOVEMENT | ON_DEPENDENCY | ON_DATA_MOVEMENT }
      [ ON_CONFLICT = { '<string>' | ALLOWED_VALUES_SEQUENCE } ] ]
    [ COMMENT = '<string_literal>' ]
Copy

变体语法

CREATE OR ALTER TAG

如果标签尚不存在,则创建一个新标签,或者将现有标签转换为语句中定义的标签。CREATE OR ALTER TAG 语句遵循 CREATE TAG 语句的语法规则,并具有与 ALTER TAG 语句相同的限制。

支持的更改包括 ALLOWED_VALUES 和 COMMENT 属性变更。

有关更多信息,请参阅 CREATE OR ALTER TAG 使用说明

CREATE OR ALTER TAG <name>
  [ ALLOWED_VALUES '<val_1>' [ , '<val_2>' [ , ... ] ] ]
  [ COMMENT = '<string_literal>' ]
Copy

必填参数

name

标签的标识符。使用 CREATE <object> 语句或 ALTER <object> 语句为 对象 分配标签字符串值。

标识符值必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如 "My object")。放在双引号内的标识符也区分大小写。

有关更多详细信息,请参阅 标识符要求

可选参数

ALLOWED_VALUES 'val_1' [ , 'val_2' [ , ... ] ]

指定使用对应的 CREATE <object>ALTER <object> 命令在 对象 上设置标签时,可以分配给标签的可能字符串值的逗号分隔列表。

必须先于所有其他参数才能工作。

The maximum number of tag values in this list is 5,000.

如果将标签配置为自动传播到目标对象,则允许列表中值的顺序会影响冲突的解决方式。有关更多信息,请参阅 标签传播冲突

默认值:NULL(允许所有字符串值,包括空字符串值,即 ' ')。

PROPAGATE = { ON_DEPENDENCY_AND_DATA_MOVEMENT | ON_DEPENDENCY | ON_DATA_MOVEMENT }

指定标签将 自动 从源对象传播到目标对象。您可以将标签配置为在存在 对象依赖关系 和/或 数据移动 时进行传播。

ON_DEPENDENCY_AND_DATA_MOVEMENT

存在对象依赖关系或数据移动时传播标签。

ON_DEPENDENCY

存在对象依赖关系时传播标签,但存在数据移动时不传播。

ON_DATA_MOVEMENT

存在数据移动时传播标签,但存在对象依赖关系时不传播。

ON_CONFLICT = { 'string' | ALLOWED_VALUES_SEQUENCE }

指定 传播标签 的值之间存在冲突时会发生什么。

如果您未设置此参数且存在冲突,则标签的值将设置为字符串 CONFLICT

可能的值:

'string'

存在冲突时,标签的值设置为指定的字符串。

ALLOWED_VALUES_SEQUENCE

标签 ALLOWED_VALUES 属性中值的顺序决定了存在冲突时使用哪个值。例如,假设您使用以下语句创建了一个标签:

CREATE TAG my_tag ALLOWED_VALUES 'blue', 'red'
  PROPAGATE = ON_DEPENDENCY
  ON_CONFLICT = ALLOWED_VALUES_SEQUENCE;
Copy

如果存在冲突,则 my_tag 的值将是 blue,因为它在允许值列表中排在 red 前面。

默认值:将标签的值设置为 CONFLICT

COMMENT = 'string_literal'

指定标签的注释。

默认:无值

访问控制要求

用于执行此操作的 角色 必须至少具有以下 权限

权限

对象

备注

CREATE TAG

架构

OWNERSHIP

标签

  • 若要创建创建与架构中已存在的对象同名的临时对象,必须授予角色或使其继承对象上的 OWNERSHIP 权限。

  • 需要为 现有 标签执行 CREATE OR ALTER TAG 语句。

Operating on an object in a schema requires at least one privilege on the parent database and at least one privilege on the parent schema.

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

有关标签 DDL 和权限的其他详细信息,请参阅 访问控制权限

General usage notes

  • You must set the ALLOWED_VALUES parameter before all other parameters, such as COMMENT.

  • 有关如何将标签与 Snowflake 对象关联的更多信息,请参阅 Object Tagging 简介

  • 有关标签 DDL 授权的更多信息,请参阅 所需权限

  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

  • The OR REPLACE and IF NOT EXISTS clauses are mutually exclusive. They can't both be used in the same statement.

  • CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。

CREATE OR ALTER TAG 使用说明

  • When you use this command, all unspecified parameters are reset. For example, if you specify a new comment only, then the PROPAGATE parameter no longer enables tag propagation.

  • ALTER TAG 命令的所有限制均适用。

  • 不支持设置或取消设置掩码策略。

示例

使用键 cost_center 创建标签。

CREATE TAG cost_center COMMENT = 'cost_center tag';
Copy

更新 cost_center 以包括新的允许值并取消设置注释:

CREATE OR ALTER TAG cost_center ALLOWED_VALUES 'finance', 'engineering', 'sales';
Copy
语言: 中文