8.11. UUID Type

The data type uuid stores Universally Unique Identifiers (UUID) as per RFC 4122, ISO/IEC 9834-8:2005, and related standards. (Some systems refer to this data type as globally unique identifier/GUID instead.) Such an identifier is a 128-bit quantity that is generated by a suitable algorithm so that it is very unlikely to be generated by anyone else in the known universe using the same algorithm. Therefore, for distributed systems, these identifiers provide a better uniqueness guarantee than that which can be achieved using sequence generators, which are only unique within a single database.

A UUID is written as a sequence of lower-case hexadecimal digits, in several groups separated by hyphens, specifically a group of 8 digits followed by three groups of 4 digits followed by a group of 12 digits, for a total of 32 digits representing the 128 bits. An example of a UUID in this standard form is:

a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11

PostgreSQL also accepts the following alternative forms for input: use of upper-case digits, the standard format surrounded by braces, and omitting the hyphens. Examples are:

A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}
a0eebc999c0b4ef8bb6d6bb9bd380a11

Output is always in the standard form.

To generate UUIDs, the contrib module uuid-ossp provides functions that implement the standard algorithms. Alternatively, UUIDs could be generated by client applications or other libraries invoked through a server-side function.