CREATE PROJECTION POLICY

在当前/指定的架构中创建一个新的 投影策略,或替换现有的投射策略。

创建投影策略后,使用 ALTER TABLE ...ALTER COLUMN 命令将投影策略应用于表列,或使用 ALTER VIEW 命令将投影策略应用于视图列。

另请参阅:

投影策略 DDL 参考

本主题内容:

语法

CREATE [ OR REPLACE ] PROJECTION POLICY [ IF NOT EXISTS ] <name>
  AS () RETURNS PROJECTION_CONSTRAINT -> <body>
  [ COMMENT = '<string_literal>' ]
Copy

参数

name

投影策略的标识符;对于架构必须是唯一的。

标识符值必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如 "My object")。放在双引号内的标识符也区分大小写。

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

body

SQL 表达式,确定是否投射列。

该表达式调用内部函数 PROJECTION_CONSTRAINT 来允许或阻止列投影:

  • PROJECTION_CONSTRAINT(ALLOW => TRUE) – 允许投射附加了投影策略的列。

  • PROJECTION_CONSTRAINT(ALLOW => FALSE) – 不允许投射附加了投影策略的列。

COMMENT = 'string_literal'

为投影策略添加注释或覆盖现有注释。

访问控制要求

用于执行此 SQL 命令的 角色 必须至少具有以下 权限

权限

对象

备注

CREATE PROJECTION POLICY

架构

请注意,对架构中的对象进行操作还需要对父数据库和架构具有 USAGE 权限。

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

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

有关投影策略 DDL 和权限的其他详细信息,请参阅 权限和命令

使用说明

  • 如果您要更新现有投影策略,并且需要查看该策略的当前定义,请运行 DESCRIBE PROJECTION POLICY 命令或 GET_DDL 函数。

  • 关于元数据:

    注意

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

示例

不允许投射列:

CREATE OR REPLACE PROJECTION POLICY do_not_project AS ()
  RETURNS PROJECTION_CONSTRAINT ->
  PROJECTION_CONSTRAINT(ALLOW => false);
Copy

投射 analyst 自定义角色的列,否则不投射该列:

CREATE OR REPLACE PROJECTION POLICY project_analyst_only AS ()
  RETURNS PROJECTION_CONSTRAINT ->
    CASE
      WHEN CURRENT_ROLE() = 'ANALYST'
        THEN PROJECTION_CONSTRAINT(ALLOW => true)
      ELSE PROJECTION_CONSTRAINT(ALLOW => false)
    END;
Copy
语言: 中文