default-Wert der GUID für eine Spalte in mysql
Möchte ich eine Spalte standardmäßig eine GUID, so dass, wenn ich mache einen insert-und ich nicht explizit den Wert, ich will, dass es standardmäßig einen neuen GUID-Wert.
wie kann ich dies tun?
InformationsquelleAutor Blankman | 2010-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sein, dass die UUID() nicht akzeptiert wird als DEFAULT-Einschränkung, müssen Sie einen trigger verwenden.
Diese setzt man den Wert für die
NEW_TABLE.uuid
Spalte:+1 - Du hast meine Frage beantwortet, das war völlig anders als das original - aber ich Schätze, dass es alles das gleiche!
InformationsquelleAutor
Vorherige Antwort ist nicht ganz richtig - du musst vorsichtig sein mit dem Trigger... Sie wird tatsächlich zu überschreiben, Voreinstellung, die Sie übergeben, wenn wie in diesem Beispiel. Alles funktioniert gut, wenn der primary key nicht gesetzt, aber wenn Sie passieren Sie ein in mit EINFÜGEN, es wird gewischt bekommen mit einer neuen, zufällig eine, die durch den trigger.
Damit er richtig funktioniert, müssen Sie überprüfen, ob das Feld bereits einen Wert zuweisen, bevor Sie eine neue wie folgt:
Benutze ich
ASCII()
zu prüfen, das neue Feld Wert, alsASCII()
0 zurück, bei einem leeren string, ob die Daten in Text-oder Binär-format (und eine leere Zeichenkette der Standardwert für Felder ohne default set). Ich benutze auch binary(16) speichern meine UUID ist für die meisten effizient Speicherplatz und die Geschwindigkeit von Abfragen... wenn Sie nicht wollen, befassen sich mit der Komplexität der binären Felder können Sie dann benutzen Sie einfachUUID()
im OrtUNHEX(REPLACE(UUID(),'-',''))
mit einem char(36) Feld.InformationsquelleAutor