W MariaDB, UUID()
to wbudowana funkcja, która zwraca uniwersalny unikalny identyfikator (UUID).
UUID jest generowany zgodnie ze specyfikacjami „DCE 1.1:Remote Procedure Call” (dodatek A) CAE (Common Applications Environment) opublikowanymi przez The Open Group w październiku 1997 r. (numer dokumentu C706).
Składnia
Składnia wygląda tak:
UUID()
Tak więc żadne argumenty nie są wymagane (ani akceptowane).
Przykład
Oto przykład do zademonstrowania:
SELECT UUID();
Wynik:
+--------------------------------------+ | UUID() | +--------------------------------------+ | e5aa36ee-cd8a-11eb-be04-88e9fe739f3d | +--------------------------------------+
Jeśli wywołam to innym razem, otrzymam inną wartość:
SELECT UUID();
Wynik:
+--------------------------------------+ | UUID() | +--------------------------------------+ | f11b4702-cd8a-11eb-be04-88e9fe739f3d | +--------------------------------------+
Informacje o identyfikatorze UUID
UUID (Universal Unique Identifier) to numer, który ma być globalnie unikalny w czasie i przestrzeni. Dwa wywołania UUID()
oczekuje się, że wygenerują dwie różne wartości, nawet jeśli te wywołania są wykonywane na dwóch oddzielnych komputerach, które nie są ze sobą połączone.
UUID to 128-bitowa liczba reprezentowana przez ciąg utf8 składający się z pięciu liczb szesnastkowych w aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
format:
- Pierwsze trzy liczby są generowane na podstawie znacznika czasu.
- Czwarta liczba zachowuje niepowtarzalność czasową na wypadek utraty monotonii wartości znacznika czasu (na przykład z powodu czasu letniego).
- Piąty numer to numer węzła IEEE 802, który zapewnia unikatowość przestrzenną. Liczba losowa jest zastępowana, jeśli ta ostatnia nie jest dostępna. W takich przypadkach nie można zagwarantować niepowtarzalności przestrzennej. Powiedziawszy to, kolizja powinna być zdarzeniem o wyjątkowo niskim prawdopodobieństwie.
Zauważ, że instrukcje używające UUID()
funkcje nie są bezpieczne dla replikacji opartej na instrukcjach.
W porównaniu z SYS_GUID()
Funkcja
Wynik zwrócony przez UUID()
jest podobny do zwracanego przez SYS_GUID()
funkcja, z wyjątkiem tego, że SYS_GUID()
nie zawiera symbolu myślnika (-
) w wyniku (natomiast, UUID()
tak).
Oto porównanie tych dwóch:
SELECT
UUID(),
SYS_GUID();
Wynik:
+--------------------------------------+----------------------------------+ | UUID() | SYS_GUID() | +--------------------------------------+----------------------------------+ | 9e795ffc-cd71-11eb-8f75-0800270503a7 | 9E796001CD7111EB8F750800270503A7 | +--------------------------------------+----------------------------------+
SYS_GUID()
funkcja została wprowadzona w MariaDB 10.6.1 w celu zwiększenia kompatybilności z Oracle.
Jest też UUID_SHORT()
funkcja, która zwraca krótki UUID jako 64-bitową liczbę całkowitą bez znaku.
Przekazywanie argumentów
Jak wspomniano, UUID()
nie przyjmuje żadnych argumentów. Oto, co się dzieje, gdy przekazuję argument:
SELECT UUID(3);
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UUID'