ALTER PROJECTION POLICY

用新规则或新注释替换现有 投影策略 规则,并允许重命名投影策略。

在下一个使用投影策略的 SQL 查询运行时,对策略规则所做的任何更改才会生效。

另请参阅:

投影策略 DDL 引用

语法

ALTER PROJECTION POLICY [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER PROJECTION POLICY [ IF EXISTS ] <name> SET BODY -> <expression>

ALTER PROJECTION POLICY <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER PROJECTION POLICY <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER PROJECTION POLICY [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'

ALTER PROJECTION 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 表达式确定是否投射列。

该表达式可以包含 CASE 和其他逻辑语句,但必须调用 PROJECTION_CONSTRAINT 函数:

PROJECTION_CONSTRAINT(ALLOW=>{TRUE|FALSE}, ENFORCEMENT=><enforcement_style>)
Copy
  • ALLOW => { TRUE | FALSE } – TRUE 允许对列进行投影。FALSE 防止对列进行投影,行为由 ENFORCEMENT 指定。FALSE 仅影响最终结果表中显示的列。

  • ENFORCEMENT => 'enforcement_style' – 如果 ALLOW=FALSE,则指定若查询包含受保护列时会发生什么情况。支持的值:

    • FAIL – 如果最外层的查询中包含受保护列,则查询将失败。

    • NULLIFY – 受保护列中的所有行都返回值 NULL。

    默认值:FAIL

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 PROJECTION POLICY 命令或 GET_DDL 函数。

  • 禁止将投影策略移动到 托管访问架构 (使用 ALTER PROJECTION POLICY ...RENAME TO 语法),除非 投影策略所有者(即,对投影策略具有 OWNERSHIP 权限的角色)还拥有目标架构。

  • 关于元数据:

    注意

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

示例

重命名投影策略:

ALTER PROJECTION POLICY mypolicy RENAME TO proj_policy_acctnumber;
Copy
语言: 中文