phpbar.de logo

Mailinglisten-Archive

Re: SEQUENCE-Funktionalität
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: SEQUENCE-Funktionalität



Hi,

Alex Killing schrieb:
> 
> Hallo.
> 
> >
> > Gibt es bei mySQL eine SEQUENCE-Funktionalität wie bei Postgres, die die
> > Verwaltung einer systemweit eindeutigen GUID (global unique ID) erlaubt,
>                    ---------- (= Datenbank-weit ?)
> > oder muß man so etwas durch irgendwelche Tricks (Sekunden siet 1970 +
> > Prozess-ID des laufenden Prozesses) nachbilden?
> >
> > Es gibt zwar das AUTO_INCREMENT-Feature, das jedoch immer nur
> > tabellenweit eindeutig ist und außerdem IDs in Sonderfällen (Löschen des
> > Datensatzes mit der höchsten ID) wiederverwendet.
> 
> Meines Wissens nicht. Mach doch einfach eine Tabelle "guidtab" in der
> nur ein Autoincrement-Feld drin ist und benutze die zum erstellen Deiner
> GUID. Dann schreibst Du dir eine Funktion get_next_guid() in der dort
> ein Eintrag gemacht wird und die GUID zurückgibt. In php oder perl ein
> Dreizeiler, oder hab ich da was übersehen ?
> 

Leider ja: Zwei Benutzer wollen einen neuen Datensatz anlegen. Der erste
holt sich eine neue ID. Noch bevor sein Programm den neuen Eintrag in
die Datenbank schreibt und die ID-Tabelle aktualisiert hat, holt sich
User 2 eine neue ID, die aber noch die gleiche ist, die auch User 1
bekommen hat. In diesem Fall werden zwei neue Datensätze angelegt, die
die gleiche ID haben, und es gibt einen Fehler.

Ich kann auch nicht den Datensatz ohne ID speichern und dann schauen,
welche ID er zugewiesen bekam. Hier tritt das gleiche Problem auf: Bevor
die ID abgefragt werden kann, wird noch ein neuer Datensatz angelegt und
ich bekomme die falsche ID zurück.

MARK


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive