Spec-Zone.ru › MariaDB

Тип данных UUID

MariaDB начиная с 10.7.0

Тип данных 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
Содержание, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержание не проверяется предварительно MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают взгляды MariaDB или любой другой стороны.

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API