CREATE TYPE

:doc:`ユーザー定義型</sql-reference/data-types-user-defined>`を作成します。

こちらもご参照ください。

ALTER TYPEDESCRIBE TYPESHOW TYPESDROP TYPEUNDROP TYPE

構文

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

必須パラメーター

name

ユーザー定義型の識別子を指定します。これは、ユーザー定義型が作成されるスキーマに対して一意である必要があります。

名前をSnowflakeの型名と同じにすることはできません。たとえば、型名を``array``または``geometry``にすることはできません。

名前が:doc:`Snowflakeキーワード</sql-reference/reserved-keywords>`と同じである場合は、二重引用符で指定する必要があります。

また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

AS type

既存の:doc:`Snowflakeデータ型</sql-reference-data-types>`の定義。

指定された型定義は、作成されるユーザー定義型の*ベース型*です。

:samp:`{type}`は、別のユーザー定義型にすることはできません。

オプションのパラメーター

COMMENT = 'string_literal'

ユーザー定義型のコメントを指定します。

デフォルト: 値なし

アクセス制御の要件

この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

オブジェクト

メモ

CREATE TYPE

スキーマ

スキーマ内のオブジェクトを操作するには、親データベースの少なくとも1つの権限と、親スキーマの少なくとも1つの権限が必要です。

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

使用上の注意

  • OR REPLACE 句と IF NOT EXISTS 句は互いに排他的です。この2つを同じステートメントで使うことはできません。

  • CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。

  • メタデータについて:

    注意

    Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。

CREATE TYPEコマンドを使用して、NUMBERデータ型に基づいたユーザー定義型を作成します。

CREATE TYPE age AS NUMBER(3,0);

OBJECTデータ型に基づいたユーザー定義型を作成します。

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

その他の例については、 ユーザー定義のデータ型の例 をご参照ください。