В MariaDB, UUID()
е вградена функция, която връща универсален уникален идентификатор (UUID).
UUID се генерира в съответствие със спецификациите на „DCE 1.1:Извикване на отдалечена процедура“ (Приложение A) CAE (Обща среда на приложения), публикувани от The Open Group през октомври 1997 г. (номер на документ C706).
Синтаксис
Синтаксисът е така:
UUID()
Така че не се изискват (или приемат) аргументи.
Пример
Ето пример за демонстрация:
SELECT UUID();
Резултат:
+--------------------------------------+ | UUID() | +--------------------------------------+ | e5aa36ee-cd8a-11eb-be04-88e9fe739f3d | +--------------------------------------+
Ако го извикам друг път, получавам различна стойност:
SELECT UUID();
Резултат:
+--------------------------------------+ | UUID() | +--------------------------------------+ | f11b4702-cd8a-11eb-be04-88e9fe739f3d | +--------------------------------------+
Относно UUID
UUID (Universal Unique Identifier) е число, което е проектирано да бъде глобално уникално в пространството и времето. Две извиквания към UUID()
се очаква да генерират две различни стойности, дори ако тези повиквания се извършват на два отделни компютъра, които не са свързани един с друг.
UUID е 128-битово число, представено от utf8 низ от пет шестнадесетични числа в aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
формат:
- Първите три числа се генерират от времеви печат.
- Четвъртото число запазва временната уникалност в случай, че стойността на времевата марка загуби монотонност (например поради лятно часово време).
- Петият номер е номер на възел IEEE 802, който осигурява пространствена уникалност. Случайно число се заменя, ако последното не е налично. В такива случаи не може да се гарантира пространствена уникалност. Като се има предвид това, сблъсъкът трябва да бъде събитие с изключително ниска вероятност.
Имайте предвид, че изрази, използващи UUID()
функции не са безопасни за репликация, базирана на изрази.
В сравнение с SYS_GUID()
Функция
Резултатът, върнат от UUID()
е подобен на този, върнат от SYS_GUID()
функция, с изключение на SYS_GUID()
не включва символа за тире (-
) в резултата (като има предвид, че UUID()
прави).
Ето сравнение на двете:
SELECT
UUID(),
SYS_GUID();
Резултат:
+--------------------------------------+----------------------------------+ | UUID() | SYS_GUID() | +--------------------------------------+----------------------------------+ | 9e795ffc-cd71-11eb-8f75-0800270503a7 | 9E796001CD7111EB8F750800270503A7 | +--------------------------------------+----------------------------------+
SYS_GUID()
функцията беше въведена в MariaDB 10.6.1 за подобряване на съвместимостта с Oracle.
Има и UUID_SHORT()
функция, която връща кратък UUID като 64-битово цяло число без знак.
Предаване на аргументи
Както споменахме, UUID()
не приема никакви аргументи. Ето какво се случва, когато предам аргумент:
SELECT UUID(3);
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UUID'