2017-04-19 6 views
1

Ich möchte Datenbankspalte zu generieren automatisch um 300 ++ zufällige alphanumerische Zeichenfolge jedes Mal, wenn ich einen neuen Eintrag in die Datenbank einfügen. Der Code unten nur für die Größe von 36.Riesige MySQL zufällige alphanumerische Zeichenfolge

DELIMITER ;; 
CREATE TRIGGER testdata 
BEFORE INSERT ON testdata 
FOR EACH ROW 
BEGIN 
    IF new.token IS NULL THEN 
    SET new.token = uuid(); 
    END IF; 
END 
;; 

Vielen Dank für alle, die diese Frage beantworten.

+0

Was ist der Zweck dieser Zeichenfolge? Es gibt Techniken [wie diese] (http://stackoverflow.com/questions/16737910/generating-a-random-unique-8-character-string-using-mysql), um alphanumerische Sequenzen zu generieren, aber wenn Sie etwas kryptographisch eindeutig und benötigen Unerklärlich, 'RAND()' ist dafür zu vorhersehbar. – tadman

+0

Hallo. @tadman Danke für deine Antwort. Der Zweck dieser Zeichenfolge ist wie eine Art von Authentifizierung. Der Verstand schlägt mir eine bessere Methode vor, auf die ich mich bewerben kann und die kryptographisch einzigartig ist? –

+0

UUID-artige Werte sind nur dazu gedacht, eindeutig und nicht unvorhersehbar zu sein. Für etwas, das kryptographisch eindeutig ist, benötigen Sie einen sicheren Zufallszahlengenerator und kodieren ihn dann in Base-62 oder etwas Ähnliches. Dies ist möglicherweise nicht die beste Lösung für MySQL, aber Sie können es versuchen. In einer externen Programmiersprache ist das viel einfacher. – tadman

Antwort

1

Eine Möglichkeit wäre, nur die Kette zusammen die Ausgabe mehrerer Anrufe zu uuid(), dh

DELIMITER ;; 
CREATE TRIGGER testdata 
BEFORE INSERT ON testdata 
FOR EACH ROW 
BEGIN 
    IF new.token IS NULL THEN 
     SET new.token = CONCAT(REPLACE(uuid(), '-', ''), REPLACE(uuid(), '-', ''), ...) 
    END IF; 
END 
;; 

Hinweis hier, dass ich den Bindestrich aus dem UUIDs entfernen, weil sie überflüssig sind und nicht viel zu tun in der Art und Weise die Strings zufälliger zu machen.

+0

Hallo. @TimBiegeleisen Danke für deine Antwort. Es funktioniert so, wie ich es mir wünsche. –

Verwandte Themen