Тип данных UUID
Тип данных UUID был добавлен в предварительной версии MariaDB 10.7.0.
Синтаксис
UUID
Описание
Тип данных UUID предназначен для хранения 128-битных UUID (универсально уникальных идентификаторов). Подробную информацию об UUID см. на странице функции UUID.
Извлечение
Данные, извлеченные с помощью этого типа данных, представлены в строковом формате, определенном в RFC4122.
Преобразование типов
Строковые литералы шестнадцатеричных символов и CHAR/VARCHAR/TEXT могут быть преобразованы к типу данных UUID. Аналогично, шестнадцатеричные литералы, двоичные литералы и типы BINARY/VARBINARY/BLOB также могут быть преобразованы к типу UUID.
Тип данных не будет принимать короткие UUID, сгенерированные с помощью функции UUID_SHORT, но примет значение без символа - , сгенерированное функцией SYS_GUID (или вставленное непосредственно). Дефисы также могут быть частично опущены или включены после любой группы из двух цифр.
Тип не принимает UUID в фигурных скобках, разрешенных некоторыми реализациями.
Хранение
UUID хранятся в индексно-совместимом формате, порядок UUID llllllll-mmmm-Vhhh-vsss-nnnnnnnnnnnn хранится следующим образом:
nnnnnnnnnnnn-vsss-Vhhh-mmmm-llllllll
Это обеспечивает порядок сортировки. Если используется UUIDv1 (узел и метка времени), то сначала сортируется узел, а затем метка времени.
Примеры
CREATE TABLE t1 (id UUID);
Прямая вставка через строковые литералы:
INSERT INTO t1 VALUES('123e4567-e89b-12d3-a456-426655440000');
Прямая вставка через шестнадцатеричные литералы:
INSERT INTO t1 VALUES (x'fffffffffffffffffffffffffffffffe');
Генерация и вставка с помощью функции UUID.
INSERT INTO t1 VALUES (UUID());
Извлечение:
SELECT * FROM t1; +--------------------------------------+ | id | +--------------------------------------+ | 123e4567-e89b-12d3-a456-426655440000 | | ffffffff-ffff-ffff-ffff-fffffffffffe | | 93aac041-1a14-11ec-ab4e-f859713e4be4 | +--------------------------------------+
Функция UUID_SHORT не генерирует корректные UUID полной длины:
INSERT INTO t1 VALUES (UUID_SHORT()); ERROR 1292 (22007): Incorrect uuid value: '99440417627439104' for column `test`.`t1`.`id` at row 1
Принятие значения без символа -, либо напрямую, либо сгенерированного функцией SYS_GUID:
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 |
+--------------------------------------+
Использование дефисов и фигурных скобок:
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 |
+--------------------------------------+
См. также
- 10.7 предварительная версия: Тип данных UUID (статья в блоге mariadb.org)
- Функция UUID
- Функция UUID_SHORT
-
SYS_GUID - UUID без символа
-для совместимости с Oracle
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/uuid-data-type/