UUID in Datenbank erstellen

Wenn ich innerhalb der Datenbank eine UUID() erstelle, dann erhalte ich:

SELECT UUID()  > 9405853d-fbb8-11ee-a525-74563c917154
#und um die kompakter zu bekommen alle Bindestriche entfernen
SELECT REPLACE(UUID(),'-','') > 9405853dfbb811eea52574563c917154

Wenn ich aber das gleiche mit INSERT in die Tabelle schreiben möchte, dann kürzt er mir das Ergebnis auf 16 Zeichen und man kann es nur als String inserten?

INSERT INTO property_group(id) VALUES (REPLACE(UUID(),'-','')) 
#respektive
INSERT INTO property_group(id) VALUES ('9405853dfbb811eea52574563c917154')

Erst wenn ich UNHEX() nutze fügt er es korrekt ein.

INSERT INTO property_group(id) VALUES (UNHEX(REPLACE(UUID(),'-','')))

Ist das der korrekte Weg?

Vielleicht so:

SELECT UUID_TO_BIN(UUID())

oder

SET @NewUUID = ( SELECT UUID_TO_BIN(UUID()) );
INSERT INTRO … @NewUUID

2 „Gefällt mir“

UUID() erstellt einen String. Die ID-Spalten in Shopware sind vom Typ Binary.

Daher musst du den String (wie von dir beschrieben) mit UNHEX() in einen Binary-Typ umwandeln. Oder alternativ wie bei @r4m über UUID_TO_BIN().

1 „Gefällt mir“

OK, UUID_TO_BIN() kennt meine MariaDB 10.6 nicht :-S . dann muss ich wohl auf 10.7 warten :smiley: