Create a UDT
User-Defined Types (UDTs) can be used to store multiple data fields, each with a name and type, on one column. The fields in a UDT can be any valid data type, including collections and other UDTs.
To use a UDT, you must create the UDT itself, which is effectively a custom data type definition.
After a UDT is created, you can use it to define a table column, like any other data type, with CREATE TABLE or ALTER TABLE.
A UDT can be used in multiple tables, like any other data type.
UDTs are stored per keyspace.
However, you can access a UDT defined on one keyspace from another keyspace by using the <keyspace_name>.<type_name> notation.
Use a CREATE TYPE statement to create a user-defined type named basic_info:
CREATE TYPE IF NOT EXISTS cycling.basic_info (
birthday timestamp,
nationality text,
height text,
weight text
);
DESCRIBE TYPE cycling.basic_info;
Results
Create a table for storing cyclist data in columns of type basic_info.
Use the frozen keyword in the definition of the user-defined type column.
The frozen keyword is not required for UDTs that contain only non-collection fields.
When using the frozen keyword, you cannot update parts of a user-defined type value.
The entire value must be overwritten.
The database treats the value of a frozen, user-defined type like a blob.
CREATE TABLE IF NOT EXISTS cycling.cyclist_stats (
id UUID PRIMARY KEY,
lastname text,
basics basic_info
);
A user-defined type can be nested in another column type.
The example below nests a UDT in a frozen list named races.
CREATE TYPE IF NOT EXISTS cycling.race (
race_title text,
race_date timestamp,
race_time text
);
DESCRIBE TYPE cycling.race;
Results
CREATE TABLE IF NOT EXISTS cycling.cyclist_races (
id UUID PRIMARY KEY,
lastname text,
firstname text,
races list<FROZEN <race>>
);
Results