CREATE TYPE

创建一个 用户定义的类型

另请参阅:

ALTER TYPEDESCRIBE TYPESHOW TYPESDROP TYPEUNDROP TYPE

语法

CREATE [ OR REPLACE ] TYPE [ IF NOT EXISTS ] <name> AS <type>
  [ COMMENT = '<string_literal>' ]

必填参数

name

指定用户定义的类型的标识符;对于创建用户定义的类型时所在的架构来说,此标识符必须是唯一的。

名称不能与 Snowflake 类型名称相同。例如,类型名称不能是 arraygeometry

如果名称与 Snowflake 关键字 相同,它必须放在双引号内指定。

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

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

AS type

现有的 Snowflake 数据类型 定义。

指定的类型定义是要创建的用户定义类型的 基类型

type 不能是其他用户定义的类型。

可选参数

COMMENT = 'string_literal'

指定用户定义类型的注释。

默认:无值

访问控制要求

用于执行此操作的 角色 必须至少具有以下 权限

权限

对象

备注

CREATE TYPE

架构

对架构中的对象进行操作至少需要父数据库的一项权限和父架构的一项权限。

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

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

使用说明

  • OR REPLACE 和 IF NOT EXISTS 子句互斥。它们不能同时用于同一条语句中。

  • CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。

  • 关于元数据:

    注意

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

示例

使用 CREATE TYPE 命令创建基于 NUMBER 数据类型的用户定义类型:

CREATE TYPE age AS NUMBER(3,0);

创建基于 OBJECT 数据类型的用户定义类型:

CREATE TYPE path AS OBJECT(
  relative BOOLEAN,
  segments ARRAY(STRING)
);

有关更多示例,请参阅 用户定义的数据类型的示例