Skip to main content
The UUID (Universally Unique Identifier) stores a 128-bit value that is unique across both space and time.
To auto-generate unique row identifiers, use with the gen_random_uuid() function as the default value. See the example below for more details.

Syntax

You can express UUID values using the following formats: CockroachDB displays all UUID values in the standard RFC4122 format.

Size

A UUID value is 128 bits in width, but the total storage size is likely to be larger due to CockroachDB metadata.

Examples

Create a table with manually-entered UUID values

Create a table with UUID in standard RFC4122-specified format

Create a table with UUID in BYTE format

Create a table with UUID used as URN

Express UUIDs in alternate formats

Create a table with auto-generated unique row IDs

To auto-generate unique row identifiers, you can use the gen_random_uuid(), uuid_v4(), or unique_rowid() . To use the column with the gen_random_uuid() as the :
Alternatively, you can use the column with the uuid_v4() function as the default value:
In either case, generated IDs will be 128-bit, sufficiently large to generate unique values. Once the table grows beyond a single key-value range’s , new IDs will be scattered across all of the table’s ranges and, therefore, likely across different nodes. This means that multiple nodes will share in the load. This approach has the disadvantage of creating a primary key that may not be useful in a query directly, which can require a join with another table or a secondary index. If it is important for generated IDs to be stored in the same key-value range, you can use an with the unique_rowid() as the default value, either explicitly or via the :
Upon insert or upsert, the unique_rowid() function generates a default value from the timestamp and ID of the node executing the insert. Such time-ordered values are likely to be globally unique except in cases where a very large number of IDs (100,000+) are generated per node per second. Also, there can be gaps and the order is not completely guaranteed. To understand the differences between the UUID and unique_rowid() options, see the . For further background on UUIDs, see What is a UUID, and Why Should You Care?.

Supported casting and conversion

UUID values can be to the following data type:

See also