Description
The
UUID
data type is intended for the storage of 128-bit UUID (Universally Unique Identifier) data. See the
UUID function
page for more details on UUIDs themselves.
Retrieval
Data retrieved by this data type is in the string representation defined in
RFC4122
.
Casting
String literals
of hexadecimal characters and
CHAR
/
VARCHAR
/
TEXT
can be cast to the UUID data type. Likewise
hexadecimal literals
,
binary-literals
, and
BINARY
/
VARBINARY
/
BLOB
types can also be cast to UUID.
The data type will not accept a short UUID generated with the
UUID_SHORT
function, but will accept a value without the
-
character generated by the
SYS_GUID
function (or inserted directly). Hyphens can be partially omitted as well, or included after any group of two digits.
The type does not accept UUIDs in braces, permitted by some implementations.
Storage
UUID are stored in an index friendly manner, the order of a UUID of llllllll-mmmm-Vhhh-vsss-nnnnnnnnnnnn is stored as:
nnnnnnnnnnnn-vsss-Vhhh-mmmm-llllllll
This provides a sorting order, assuming a UUIDv1 (node and timestamp) is used, of the node, followed by the timestamp. The key aspect is the timestamps are sequential.
MariaDB starting with
10.10
Starting from
MariaDB 10.10.6
and
MariaDB 10.11.5
, taking into account that UUIDv7 and other versions are designed around time ordering, UUIDs version >= 6 are now stored without byte-swapping, and UUIDs with version >=8 and variant=0 are now considered invalid (as the standard expects)
Examples
CREATE TABLE t1 (id UUID);
Directly Inserting via
string literals
:
INSERT INTO t1 VALUES('123e4567-e89b-12d3-a456-426655440000');
Directly Inserting via
hexadecimal literals
:
INSERT INTO t1 VALUES (x'fffffffffffffffffffffffffffffffe');
Generating and inserting via the
UUID function
.
INSERT INTO t1 VALUES (UUID());
Retrieval:
SELECT * FROM t1;
+--------------------------------------+
| id |
+--------------------------------------+
| 123e4567-e89b-12d3-a456-426655440000 |
| ffffffff-ffff-ffff-ffff-fffffffffffe |
| 93aac041-1a14-11ec-ab4e-f859713e4be4 |
+--------------------------------------+
The
UUID_SHORT
function does not generate valid full-length UUID:
INSERT INTO t1 VALUES (UUID_SHORT());
ERROR 1292 (22007): Incorrect uuid value: '99440417627439104'
for column `test`.`t1`.`id` at row 1
Accepting a value without the
-
character, either directly or generated by the
SYS_GUID
function:
INSERT INTO t1 VALUES (SYS_GUID());
SELECT * FROM t1;
+--------------------------------------+
| id |
+--------------------------------------+
| 123e4567-e89b-12d3-a456-426655440000 |
| ffffffff-ffff-ffff-ffff-fffffffffffe |
| 93aac041-1a14-11ec-ab4e-f859713e4be4 |
| ea0368d3-1a14-11ec-ab4e-f859713e4be4 |
+--------------------------------------+
SELECT SYS_GUID();
+----------------------------------+
| SYS_GUID() |
+----------------------------------+
| ff5b6bcc1a1411ecab4ef859713e4be4 |
+----------------------------------+
INSERT INTO t1 VALUES ('ff5b6bcc1a1411ecab4ef859713e4be4');
SELECT * FROM t1;
+--------------------------------------+
| id |
+--------------------------------------+
| 123e4567-e89b-12d3-a456-426655440000 |
| ffffffff-ffff-ffff-ffff-fffffffffffe |
| 93aac041-1a14-11ec-ab4e-f859713e4be4 |
| ea0368d3-1a14-11ec-ab4e-f859713e4be4 |
| ff5b6bcc-1a14-11ec-ab4e-f859713e4be4 |
+--------------------------------------+
Valid and invalid hyphen and brace usage:
TRUNCATE t1;
INSERT INTO t1 VALUES ('f8aa-ed66-1a1b-11ec-ab4e-f859-713e-4be4');
INSERT INTO t1 VALUES ('1b80667f1a1c-11ecab4ef859713e4be4');
INSERT INTO t1 VALUES ('2fd6c945-1a-1c-11ec-ab4e-f859713e4be4');
INSERT INTO t1 VALUES ('49-c9-f9-59-1a-1c-11ec-ab4e-f859713e4be4');
INSERT INTO t1 VALUES ('57-96-da-c1-1a-1c-11-ec-ab-4e-f8-59-71-3e-4b-e4');
INSERT INTO t1 VALUES ('6-eb74f8f-1a1c-11ec-ab4e-f859713e4be4');
INSERT INTO t1 VALUES ('{29bad136-1a1d-11ec-ab4e-f859713e4be4}');
ERROR 1292 (22007): Incorrect uuid value: '{29bad136-1a1d-11ec-ab4e-f859713e4be4}'
for column `test`.`t1`.`id` at row 1
SELECT * FROM t1;
+--------------------------------------+
| id |
+--------------------------------------+
| f8aaed66-1a1b-11ec-ab4e-f859713e4be4 |
| 1b80667f-1a1c-11ec-ab4e-f859713e4be4 |
| 2fd6c945-1a1c-11ec-ab4e-f859713e4be4 |
| 49c9f959-1a1c-11ec-ab4e-f859713e4be4 |
| 5796dac1-1a1c-11ec-ab4e-f859713e4be4 |
| 6eb74f8f-1a1c-11ec-ab4e-f859713e4be4 |
+--------------------------------------+
See Also
Content reproduced on this site is the property of its respective owners,
and this content is not reviewed in advance by MariaDB. The views, information and opinions
expressed by this content do not necessarily represent those of MariaDB or any other party.