sql >> Database >  >> RDS >> MariaDB

Hoe UUID() werkt in MariaDB

In MariaDB, UUID() is een ingebouwde functie die een Universal Unique Identifier (UUID) retourneert.

De UUID wordt gegenereerd volgens "DCE 1.1:Remote Procedure Call" (bijlage A) CAE (Common Applications Environment)-specificaties gepubliceerd door The Open Group in oktober 1997 (documentnummer C706).

Syntaxis

De syntaxis gaat als volgt:

UUID()

Er zijn dus geen argumenten vereist (of geaccepteerd).

Voorbeeld

Hier is een voorbeeld om te demonstreren:

SELECT UUID();

Resultaat:

+--------------------------------------+
| UUID()                               |
+--------------------------------------+
| e5aa36ee-cd8a-11eb-be04-88e9fe739f3d |
+--------------------------------------+

Als ik het een andere keer roep, krijg ik een andere waarde:

SELECT UUID();

Resultaat:

+--------------------------------------+
| UUID()                               |
+--------------------------------------+
| f11b4702-cd8a-11eb-be04-88e9fe739f3d |
+--------------------------------------+

Over de UUID

Een UUID (Universal Unique Identifier) ​​is een nummer dat is ontworpen om wereldwijd uniek te zijn in ruimte en tijd. Twee aanroepen naar UUID() wordt verwacht dat ze twee verschillende waarden genereren, zelfs als deze oproepen worden uitgevoerd op twee afzonderlijke computers die niet met elkaar zijn verbonden.

Een UUID is een 128-bits getal dat wordt weergegeven door een utf8-reeks van vijf hexadecimale getallen in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee formaat:

  • De eerste drie getallen worden gegenereerd op basis van een tijdstempel.
  • Het vierde cijfer behoudt de tijdelijke uniciteit in het geval dat de tijdstempelwaarde eentonig wordt (bijvoorbeeld vanwege zomertijd).
  • Het vijfde getal is een IEEE 802-knooppuntnummer dat ruimtelijke uniciteit biedt. Een willekeurig getal wordt vervangen als dit laatste niet beschikbaar is. In dergelijke gevallen kan ruimtelijke uniciteit niet worden gegarandeerd. Dat gezegd hebbende, zou een botsing een gebeurtenis met een extreem lage waarschijnlijkheid moeten zijn.

Merk op dat instructies met de UUID() functie zijn niet veilig voor replicatie op basis van instructies.

Vergeleken met de SYS_GUID() Functie

Het resultaat geretourneerd door UUID() is vergelijkbaar met degene die wordt geretourneerd door de SYS_GUID() functie, behalve dat SYS_GUID() bevat geen koppelteken (- ) in het resultaat (terwijl, UUID() doet).

Hier is een vergelijking van de twee:

SELECT 
    UUID(),
    SYS_GUID();

Resultaat:

+--------------------------------------+----------------------------------+
| UUID()                               | SYS_GUID()                       |
+--------------------------------------+----------------------------------+
| 9e795ffc-cd71-11eb-8f75-0800270503a7 | 9E796001CD7111EB8F750800270503A7 |
+--------------------------------------+----------------------------------+

De SYS_GUID() functie is geïntroduceerd in MariaDB 10.6.1 om de compatibiliteit met Oracle te verbeteren.

Er is ook een UUID_SHORT() functie die een korte UUID retourneert als een 64-bits geheel getal zonder teken.

Argumenten doorgeven

Zoals vermeld, UUID() accepteert geen argumenten. Dit is wat er gebeurt als ik een argument doorgeef:

SELECT UUID(3);

Resultaat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UUID'

  1. De 9 meest voorkomende fouten bij het ontwerpen van databases

  2. Hoe json-array naar tekstarray te casten?

  3. Hoe werken MySQL-indexen?

  4. Gebruiksscenario's voor SQL Server MERGE-instructie:online synchroniseren en geschiedenistabellen