ALTER JOIN POLICY¶
替换 联接策略 的现有规则或注释。还允许您重命名联接策略。
- 另请参阅:
语法¶
ALTER JOIN POLICY [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER JOIN POLICY [ IF EXISTS ] <name> SET BODY -> <expression>
ALTER JOIN POLICY <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER JOIN POLICY <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER JOIN POLICY [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'
ALTER JOIN POLICY [ IF EXISTS ] <name> UNSET COMMENT
参数¶
name指定要更改的联接策略的标识符。
如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
有关更多信息,请参阅 标识符要求。
RENAME TO new_name指定联接策略的新标识符;对于架构来说必须唯一。如果新标识符已用于其他联接策略,则不能使用该标识符。
有关更多信息,请参阅 标识符要求。
可以将对象移动到其他数据库和/或架构,同时选择重命名对象。为此,请指定一个限定
new_name值,该值分别以db_name.schema_name.object_name或schema_name.object_name的形式包含新数据库和/或架构名称。备注
目标数据库和/或架构必须已存在。此外,新位置中不能存在同名对象;否则,该语句将返回错误。
除非 对象所有者(即拥有对象 OWNERSHIP 权限的角色)也拥有目标架构,否则禁止将对象移动到托管访问架构。
SET ...指定要为联接策略设置的一个(或多个)属性:
BODY -> expressionSQL 表达式,用于确定联接策略的限制。
要定义联接策略的主体,请调用 JOIN_CONSTRAINT 函数,该函数将返回 TRUE 或 FALSE。当函数返回 TRUE 时,查询需要使用联接返回结果。
JOIN_CONSTRAINT 函数的语法是:
JOIN_CONSTRAINT ( { JOIN_REQUIRED => <boolean_expression> } )
其中:
JOIN_REQUIRED => boolean_expression指定当从已分配联接策略的表或视图中选择数据时,查询是否需要使用联接。
策略的主体不能引用用户定义的函数、表或视图。
允许的联接列在应用策略的表或视图的 CREATE 或 ALTER 语句中指定,而不是在 CREATE JOIN POLICY 语句中指定。
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]指定 标签 名称和标签字符串值。
标签值始终为字符串,标签值的最大字符数为 256。
有关在语句中指定标签的信息,请参阅 Tag quotas。
COMMENT = 'string_literal'添加注释或覆盖联接策略的现有注释。
默认:无值
UNSET ...指定要取消设置的一个或多个属性和/或参数,方法是将其重置为联接策略的默认值:
TAG tag_name [ , tag_name ... ]COMMENT
重置属性/参数时,请仅指定名称;指定属性的值将返回错误。
访问控制要求¶
权限 |
对象 |
备注 |
|---|---|---|
OWNERSHIP |
联接策略 |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
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 和权限的更多信息,请参阅 权限和命令。
使用说明¶
如果您要更新现有联接策略,并且需要查看该策略的当前主体,请运行 DESCRIBE JOIN POLICY 命令。您还可以使用 GET_DDL 函数获取联接策略的完整定义,包括其主体。
禁止将联接策略移动到 托管访问架构 <label-managed_access_schemas>`(使用 ALTER JOIN POLICY ...RENAME TO 语法),:emph:`除非 联接策略所有者(即,对联接策略具有 OWNERSHIP 权限的角色)还拥有目标架构。
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
示例¶
修改联接策略的 SQL 表达式:
ALTER JOIN POLICY jp3 SET BODY -> JOIN_CONSTRAINT(JOIN_REQUIRED => FALSE);
重命名联接策略:
ALTER JOIN POLICY my_join_policy RENAME TO my_join_policy_2;