Random Number beim Einfügen eines Datensatzes
Random Number beim Einfügen eines Datensatzes
am 15.03.2006 19:23:37 von Frank Tylinski
Hallo an alle Leser,
ich benötige mal eine Auskunft von Leuten die sich richtig gut mit MySQL
auskennen.
Erstmal, ich nutze Mysql 4.1 ;) Leider nicht 5.0, dann könnte ich mein
Problem alleine lösen, da ich mir dafür ne SP oder eine SF schreiben
könnte. Ist leider nicht so.
Nun folgendes:
Ich möchte gerne beim Einfügen eines Datensatzes eine Zufällige 5
Stellige Zahl erzeugen, aber direkt auf Datenbank Ebene.
Ich könnte es natürlich auch im Script erzeugen, würde aber wohl eher
auf die Performance des Scriptes gehen, da ich dann immer prüfen muss,
ob es diese Zahl schon in der Datenbank gibt, da diese auch Unique sein
soll.
Sprich, die Datenbank soll beim Einfügen eines Datensatzes eine
zufällige Zahl generieren und diese dann in ein Feld schreiben.
Ist das möglich oder nicht ?
Würde mich freuen, wenn mir da jmd weiter helfen könnte.
mfg
Re: Random Number beim Einfügeneines Datensatzes
am 15.03.2006 19:46:25 von Andreas Kretschmer
Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)
Re: Random Number beim Einfügen eines Datensatzes
am 15.03.2006 20:35:33 von Frank Tylinski
Du hast Recht, ist nicht gerade Kollisionsfrei das was ich vorhabe.
Deshalb sind die anderen Methoden doch um einiges besser.
Hab es mir nun folgendermaßen vorgestellt:
Ich bilde eine MD5-Summe der IDENT bzw. einer zufälligen Zahl ( ggf. mit
timestamp ) und schneide mir daraus 6 zufällige Stellen heraus. Das ist
bestimmt idiotensicher und sollte eigentlich auch nicht zur Kollision
führen.
Ich bedanke mich schonmal.
Vielleicht fällt dir oder jmd anders noch eine bessere Lösung ein.
mfg
Re: Random Number beim Einfügen eines Datensatzes
am 15.03.2006 22:01:15 von Jens Seiler
Frank Tylinski wrote:
> Ich möchte gerne beim Einfügen eines Datensatzes eine Zufällige 5
> Stellige Zahl erzeugen, aber direkt auf Datenbank Ebene.
>
> Ich könnte es natürlich auch im Script erzeugen, würde aber wohl eher
> auf die Performance des Scriptes gehen, da ich dann immer prüfen muss,
> ob es diese Zahl schon in der Datenbank gibt, da diese auch Unique sein
> soll.
Wenn es wirklich nur 5 Stellen, also der Zahlenbereich 1-99999 sein
soll: Erstelle eine Tabelle 'Zufallszahlen' und füge in diese alle
Zahlen 1-99999 ein. Wähle ein Element mit 'SELECT zufallszahl FROM
Zufallszahlen ORDER BY RAND() LIMIT 1', benutze dieses und lösche es aus
der Tabelle 'Zufallszahlen'.
Benutzen wir in ähnlicher Weise zur Vergabe von eindeutigen Plannummern,
welche uns aus einem Pool vorgegeben worden sind. Gut, wir müssen da
keine zufällige auswählen sondern nehmen einfach die erste vorhandene.
Die Lösung sollte für den genannten Wertebereich performant und
hinreichend zufällig sein. Kollisionen sind ausgeschlossen und man kann
sehr leicht erkennen, wenn einem in Zukunft die Zufallszahlen ausgehen
sollten.
Gruß,
Jens Seiler
--
man mailt sich
mailto:mail@jens-seiler.de - ICQ# 24778881
http://www.jens-seiler.de
Re: Random Number beim Einfügen eines Datensatzes
am 17.03.2006 10:25:08 von Ulf Kadner
Frank Tylinski wrote:
> Hab es mir nun folgendermaßen vorgestellt:
> Ich bilde eine MD5-Summe der IDENT bzw. einer zufälligen Zahl ( ggf. mit
> timestamp ) und schneide mir daraus 6 zufällige Stellen heraus. Das ist
> bestimmt idiotensicher und sollte eigentlich auch nicht zur Kollision
> führen.
Die Wahrscheinlichkeit, das eine Kollision eintritt ist nicht anders,
wie bei Deiner vorigen Methode!
MfG, Ulf