CREATE TAG¶
创建新标签或替换系统中的现有标签。
该命令支持以下变体:
CREATE OR ALTER 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>' ]
重要
参数 ALLOWED_VALUES
必须始终在所有其他参数(如 COMMENT
)之前设置,这样 ALLOWED_VALUES
才能起作用。
变体语法¶
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>' ]
必填参数¶
name
标签的标识符。使用 CREATE <object> 语句或 ALTER <object> 语句为 对象 分配标签字符串值。
标识符值必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如 "My object")。放在双引号内的标识符也区分大小写。
有关更多详细信息,请参阅 标识符要求。
可选参数¶
ALLOWED_VALUES 'val_1' [ , 'val_2' [ , ... ] ]
指定使用对应的 CREATE <object> 或 ALTER <object> 命令在 对象 上设置标签时,可以分配给标签的可能字符串值的逗号分隔列表。
必须先于所有其他参数才能工作。
此列表中的最大标签值数为 300。
如果将标签配置为自动传播到目标对象,则允许列表中值的顺序会影响冲突的解决方式。有关更多信息,请参阅 标签传播冲突。
默认值: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;
如果存在冲突,则
my_tag
的值将是blue
,因为它在允许值列表中排在red
前面。
默认值:将标签的值设置为
CONFLICT
。COMMENT = 'string_literal'
指定标签的注释。
默认:无值
访问控制要求¶
权限 |
对象 |
备注 |
---|---|---|
CREATE TAG |
架构 |
|
OWNERSHIP |
标签 |
|
要对架构中的任何对象执行操作,需要对父数据库和架构具有 USAGE 权限。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述。
有关标签 DDL 和权限的其他详细信息,请参阅 访问控制权限。
CREATE OR ALTER TAG 使用说明¶
ALTER TAG 命令的所有限制均适用。
不支持设置或取消设置掩码策略。
参数
ALLOWED_VALUES
必须始终在所有其他参数(如COMMENT
)之前设置,这样ALLOWED_VALUES
才能起作用。
使用说明¶
Snowflake 将账户中的标签数限制为 10,000。
有关如何将标签与 Snowflake 对象关联的更多信息,请参阅 Object Tagging 简介。
有关标签 DDL 授权的更多信息,请参阅 所需权限。
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
OR REPLACE
和IF NOT EXISTS
子句互斥。它们不能同时用于同一条语句中。CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。
示例¶
使用键 cost_center
创建标签。
CREATE TAG cost_center COMMENT = 'cost_center tag';
更新 cost_center
以包括新的允许值并取消设置注释:
CREATE OR ALTER TAG cost_center ALLOWED_VALUES 'finance', 'engineering', 'sales';