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 权限。

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

有关对 安全对象 执行 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
语言: 中文