ALTER JOIN POLICY

替换 联接策略 的现有规则或注释。还允许您重命名联接策略。

另请参阅:

联接策略 DDL 引用

语法

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
Copy

参数

name

指定要更改的联接策略的标识符。

如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

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

RENAME TO new_name

指定联接策略的新标识符;对于架构来说必须唯一。如果新标识符已用于其他联接策略,则不能使用该标识符。

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

可以将对象移动到其他数据库和/或架构,同时选择重命名对象。为此,请指定一个限定 new_name 值,该值分别以 db_name.schema_name.object_nameschema_name.object_name 的形式包含新数据库和/或架构名称。

备注

  • 目标数据库和/或架构必须已存在。此外,新位置中不能存在同名对象;否则,该语句将返回错误。

  • 除非 对象所有者(即拥有对象 OWNERSHIP 权限的角色)也拥有目标架构,否则禁止将对象移动到托管访问架构。

SET ...

指定要为联接策略设置的一个(或多个)属性:

BODY -> expression

SQL 表达式,用于确定联接策略的限制。

要定义联接策略的主体,请调用 JOIN_CONSTRAINT 函数,该函数将返回 TRUE 或 FALSE。当函数返回 TRUE 时,查询需要使用联接返回结果。

JOIN_CONSTRAINT 函数的语法是:

JOIN_CONSTRAINT (
  { JOIN_REQUIRED => <boolean_expression> }
  )
Copy

其中:

JOIN_REQUIRED => boolean_expression

指定当从已分配联接策略的表或视图中选择数据时,查询是否需要使用联接。

策略的主体不能引用用户定义的函数、表或视图。

允许的联接列在应用策略的表或视图的 CREATE 或 ALTER 语句中指定,而不是在 CREATE JOIN POLICY 语句中指定。

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

指定 标签 名称和标签字符串值。

标签值始终为字符串,标签值的最大字符数为 256。

有关在语句中指定标签的信息,请参阅 对象的标签配额

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).

要对架构中的任何对象执行操作,需要对父数据库和架构的 USAGE 权限。请注意,如果某个角色获授某个架构的任意权限,该角色便能够解析该架构。例如,若某角色被授予 CREATE 权限,则可以在该架构上创建对象,而无需 同时 被授予该架构的 USAGE 权限。

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

有关对 安全对象 执行 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);
Copy

重命名联接策略:

ALTER JOIN POLICY my_join_policy RENAME TO my_join_policy_2;
Copy
语言: 中文