CREATE OR ALTER VERSIONED SCHEMA¶
创建新的版本化架构或修改现有的版本化架构。仅 Native Apps Framework 中的应用程序实例支持此命令。
语法¶
CREATE OR ALTER VERSIONED SCHEMA <name>
[ WITH MANAGED ACCESS ]
[ DATA_RETENTION_TIME_IN_DAYS = ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = ]
[ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ COMMENT = '<string_literal>' ]
必填参数¶
name
指定架构的标识符;对于在其中创建架构的数据库来说,此标识符必须是唯一的。
此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,
"My object"
)。放在双引号内的标识符也区分大小写。有关更多详细信息,请参阅 标识符要求。
可选参数¶
WITH MANAGED ACCESS
指定带有版本控制的托管架构。带有版本控制的托管访问架构通过架构所有者集中进行权限管理。
在常规带有版本控制的架构中,对象所有者(即具有对对象的 OWNERSHIP 权限的角色)可以将其对象的更多权限授予其他角色。
在托管架构中,架构所有者管理架构中对对象的所有权限授权,包括 未来授权。对象所有者保留对对象的 OWNERSHIP 权限;但是,只有架构所有者才能管理对对象的权限授权。
DATA_RETENTION_TIME_IN_DAYS = integer
指定可以对架构执行 Time Travel 操作(CLONE 和 UNDROP)的天数,并指定在架构中创建的所有表的默认 Time Travel 保留时间。有关更多详细信息,请参阅 了解和使用 Time Travel。
有关此对象级参数的详细说明,以及有关对象参数的更多信息,请参阅 参数。有关表级保留时间的更多信息,请参阅 CREATE TABLE 和 了解和使用 Time Travel。
值:
Standard Edition:
0
或1
Enterprise Edition:
0
到90
用于永久架构0
或1
用于瞬态架构
默认:
Standard Edition:
1
Enterprise Edition(或更高版本):
1
(除非在数据库或账户级别指定了不同的默认值)
备注
值为
0
时会有效禁用架构的 Time Travel。MAX_DATA_EXTENSION_TIME_IN_DAYS = integer
对象参数,指定 Snowflake 可以延长架构内表的数据保留期以防止表上的流过时的最大天数。
有关此参数的详细说明,请参阅 MAX_DATA_EXTENSION_TIME_IN_DAYS。
DEFAULT_DDL_COLLATION = 'collation_specification'
为添加到架构的所有表指定默认 排序规则规范。可以在单个表级别上覆盖默认值。
有关该参数的更多详细信息,请参阅 DEFAULT_DDL_COLLATION。
COMMENT = 'string_literal'
指定架构的注释。
默认:无值
访问控制要求¶
权限 |
对象 |
备注 |
---|---|---|
CREATE SCHEMA |
应用程序 |
如果架构已存在,并且您想修改该架构,则需要具备应用程序的 OWNERSHIP 权限。 |
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述。
备注
虽然您通常会在设置脚本中创建带有版本控制的架构,但也可以通过如下方式创建带有版本控制的架构:
通过具有所有者权限的存储过程。
在使用者账户中,使用对应用程序具有 CREATE SCHEMA 权限的应用程序角色。
使用说明¶
如果架构不存在,Snowflake 会创建带有版本控制的架构。
如果架构存在且已与命令匹配,Snowflake 会将此视为不执行任何操作。
如果架构存在,但与命令不匹配,Snowflake 会修改带有版本控制的架构以匹配命令。