Skip to main content
The CREATE TYPE creates a new type in a . After the type is created, it can only be referenced from the database that contains the type. The following user-defined data types can be created with this statement: The CREATE TYPE statement performs a schema change. For more information about how online schema changes work in CockroachDB, see .

Synopsis

create_type syntax diagram

Parameters

ParameterDescription
type\_nameThe name of the type. You can qualify the name with a (e.g., db.typename), but after the type is created, it can only be referenced from the database that contains the type.
IF NOT EXISTSCreate a new type only if a type of the same name does not already exist in the database; if one does exist, do not return an error.
opt\_enum\_val\_listA list of values that make up the type’s enumerated set.
opt\_composite\_type\_listA list of values that make up the set of types that make up a composite type.

Required privileges

  • To create a type, the user must have on the parent database and the schema in which the type is being created.
  • To use a user-defined type in a table (e.g., when defining a column’s type), the user must have on the type.

Example

Create an enumerated data type

Use the statements below to create an data type.
To see all user-defined data types, use :
To see the values accepted by the underlying data type, use :

Create a composite data type

Use the statements below to create a composite data type:
Insert 10,000 randomly generated values of type mypoint:

Known limitations

  • Updating subfields of composite types using dot syntax results in a syntax error.
  • Tuple elements cannot be accessed without enclosing the name in parentheses. For example, (OLD).column and (NEW).column when used in .

See also