UUID and TIMEUUID
This page documents the preview version (v2.23). Preview includes features under active development and is for development and testing only. For production, use the stable version (v2024.1). To learn more, see Versioning.
Synopsis
Use the UUID data type to specify columns for data of universally unique IDs. TIMEUUID is a universal unique identifier variant that includes time information.
| Data type | Description |
|---|---|
UUID |
UUID (all versions) |
TIMEUUID |
UUID (version 1) |
Syntax
type_specification ::= { UUID | TIMEUUID }
uuid_literal ::= 4hex_block 4hex_block '-' 4hex_block '-' 4hex_block '-' 4hex_block '-' 4hex_block 4hex_block 4hex_block
4hex_block ::= hex_digit hex_digit hex_digit hex_digit
Where
hex_digitis a hexadecimal digit ([0-9a-fA-F]).
Semantics
- Columns of type
UUIDorTIMEUUIDcan be part of thePRIMARY KEY. - Implicitly, values of type
UUIDandTIMEUUIDdata types are neither convertible nor comparable to other data types. TIMEUUIDs are version 1 UUIDs: they include the date and time of their generation and a spatially unique node identifier.- Comparison of
TIMEUUIDvalues first compares the time component and then (if time is equal) the node identifier.
Examples
ycqlsh:example> CREATE TABLE devices(id UUID PRIMARY KEY, ordered_id TIMEUUID);
ycqlsh:example> INSERT INTO devices (id, ordered_id)
VALUES (123e4567-e89b-12d3-a456-426655440000, 123e4567-e89b-12d3-a456-426655440000);
ycqlsh:example> INSERT INTO devices (id, ordered_id)
VALUES (123e4567-e89b-42d3-a456-426655440000, 123e4567-e89b-12d3-a456-426655440000);
ycqlsh:example> UPDATE devices SET ordered_id = 00000000-0000-1000-0000-000000000000
WHERE id = 123e4567-e89b-42d3-a456-426655440000;
ycqlsh:example> SELECT * FROM devices;
id | ordered_id
--------------------------------------+--------------------------------------
123e4567-e89b-12d3-a456-426655440000 | 123e4567-e89b-12d3-a456-426655440000
123e4567-e89b-42d3-a456-426655440000 | 00000000-0000-1000-0000-000000000000