CREATE TYPE¶
Creates a user-defined type.
- See also:
ALTER TYPE , DESCRIBE TYPE , SHOW TYPES , DROP TYPE , UNDROP TYPE
Syntax¶
Required parameters¶
nameSpecifies the identifier for the user-defined type; must be unique for the schema in which the user-defined type is created.
The name can’t be the same as a Snowflake type name. For example, the type name can’t be
arrayorgeometry.If the name is the same as a Snowflake keyword, it must be specified in double quotes.
In addition, the identifier must start with an alphabetic character and cannot contain spaces or special characters unless the entire identifier string is enclosed in double quotes (for example,
"My object"). Identifiers enclosed in double quotes are also case-sensitive.For more information, see Identifier requirements.
AS typeAn existing Snowflake data type definition.
The specified type definition is the base type for the user-defined type being created.
typecan’t be another user-defined type.
Optional parameters¶
COMMENT = 'string_literal'Specifies a comment for the user-defined type.
Default: No value
Access control requirements¶
A role used to execute this operation must have the following privileges at a minimum:
Privilege |
Object |
Notes |
|---|---|---|
CREATE TYPE |
Schema |
Operating on an object in a schema requires at least one privilege on the parent database and at least one privilege on the parent schema.
For instructions on creating a custom role with a specified set of privileges, see Creating custom roles.
For general information about roles and privilege grants for performing SQL actions on securable objects, see Overview of Access Control.
Usage notes¶
The OR REPLACE and IF NOT EXISTS clauses are mutually exclusive. They can’t both be used in the same statement.
CREATE OR REPLACE <object> statements are atomic. That is, when an object is replaced, the old object is deleted and the new object is created in a single transaction.
Regarding metadata:
Attention
Customers should ensure that no personal data (other than for a User object), sensitive data, export-controlled data, or other regulated data is entered as metadata when using the Snowflake service. For more information, see Metadata fields in Snowflake.
Examples¶
Use the CREATE TYPE command to create a user-defined type based on the NUMBER data type:
Create a user-defined type based on the OBJECT data type:
For more examples, see Examples for user-defined data types.