Seite 1 von 1

Wieso ist user_id kein AUTO_INCREMENT?

Verfasst: 01.09.2006 07:52
von faux
Hallo!

Kann mir jemand erklären, wieso in der Users-Table die user_id kein AUTO_INCREMENT ist, sondern vordem Einfügen der nächste freie Wert (MAX(user_id) + 1) ermittelt wird?
Ich habe damit nämlich ein Problem. Ich habe eine Usergalerie, die die Usertabelle von phpBB benutzt. Wenn ich jetzt in phpBB einen User lösche, würden alle seine Bilder dem nächsten User zugeschrieben werden. An der Galerie will ich nichts ändern. Die Frage ist jetzt wieso das so ist? Wieso nicht einfach AUTO_INCREMENT und mysql_insert_id() (bzw $db->sql_lastid()) anwenden?

Grüße
Faux

Verfasst: 01.09.2006 19:54
von Miriam
Wieso würden denn die Bilder, beim Löschen eines Users, falsch zugeordnet werden? :-?

Re: Wieso ist user_id kein AUTO_INCREMENT?

Verfasst: 01.09.2006 20:09
von Jensemann
faux hat geschrieben:Hallo!

Kann mir jemand erklären, wieso in der Users-Table die user_id kein AUTO_INCREMENT ist, sondern vordem Einfügen der nächste freie Wert (MAX(user_id) + 1) ermittelt wird?
Wegen eines Bugs in alten MySQL Versionen, bei einer ID unter 0 (Anonymous hat -1) gab es Probleme.

Verfasst: 01.09.2006 20:54
von Dave
Ich verstehe das problem auch nicht so ganz... Wenn du einen User löscht wieso willste seine Bilder noch haben? Oder wieso ordnest du sie dann nicht einfach dem der user_id -1 zu?

MfG
Dave

Verfasst: 01.09.2006 21:02
von faux
Miriam hat geschrieben:Wieso würden denn die Bilder, beim Löschen eines Users, falsch zugeordnet werden? :-?
Da in der Usertabel das Feld user_id immer auf den nächst größeren Wert von MAX(user_id) gesetzt wird. Wenn also ein User gelöscht wird, so bekommt der nächste User die ID des zuvpr gelöschten. Und die Galerie ordnet die Bilder (und Rechte) anhand der User ID zu.
Dave hat geschrieben:Ich verstehe das problem auch nicht so ganz... Wenn du einen User löscht wieso willste seine Bilder noch haben? Oder wieso ordnest du sie dann nicht einfach dem der user_id -1 zu?
So sollte es sein. Nur ist es vor kurzem vorgekommen, dass ein Admin einen User aus dem phpBB gelöscht hat, aber vergessen hat ihn vorher aus der Galerie zu löschen (dass seine Bilder jemanden anderen zugeordnet werden und die Gruppenrechte gelöscht werden). Jedenfalls hat sich dann ein neuer User registriert und die ID des zuvor gelöschten erhalten (so soll es sein). Da die Rechte und Bilder jedoch noch bestanden wurden sie laut ID dem neuen zugeordnet. Und bevor ich da jetzt lange die User-Verwaltungen von Galerie und phpBB zusammenwürfle und langmächtig herumcode, dass soetwas nicht nochmal passieren kann, dachte ich, ich setze die user_id einfach auf AUTO_INCREMENT.
jensemann hat geschrieben:Wegen eines Bugs in alten MySQL Versionen, bei einer ID unter 0 (Anonymous hat -1) gab es Probleme.
Schätze mal, dass das MySQL 3 und kleiner war, oder ist MySQL 4 von diesem "Feature" auch noch betroffen?

Danke schon mal.

Grüße
Faux

Verfasst: 01.09.2006 21:04
von Jensemann
faux hat geschrieben:
jensemann hat geschrieben:Wegen eines Bugs in alten MySQL Versionen, bei einer ID unter 0 (Anonymous hat -1) gab es Probleme.
Schätze mal, dass das MySQL 3 und kleiner war, oder ist MySQL 4 von diesem "Feature" auch noch betroffen?
Es betraf niemals ein ganzes Major-Release (das wäre ja grausam), es betraf immer nur eine oder ein paar wenige Minor Releases, ich glaube nicht das diese heute noch in großem Umfang eingesetzt werden.

Was hält dich auf es selbst zu testen? Ist ca. 5 Min. Aufwand ;-)

Verfasst: 01.09.2006 21:05
von S2B
faux hat geschrieben:
jensemann hat geschrieben:Wegen eines Bugs in alten MySQL Versionen, bei einer ID unter 0 (Anonymous hat -1) gab es Probleme.
Schätze mal, dass das MySQL 3 und kleiner war, oder ist MySQL 4 von diesem "Feature" auch noch betroffen?
Mein MySQL4 (nicht 4.1)-Server hat neulich noch gesponnen, als ich sowas machen wollte. :wink:

Verfasst: 01.09.2006 21:05
von faux
jensemann hat geschrieben:Was hält dich auf es selbst zu testen? Ist ca. 5 Min. Aufwand ;-)
Nichts. ;)
Ich werde es in wenigen Augenblicken wissen. :D

Geht. Danke. Wollte nur auf Nummer sicher gehen, dass dieser "Bug" der einzige Grund hierfür war.
S2B hat geschrieben:Mein MySQL4 (nicht 4.1)-Server hat neulich noch gesponnen, als ich sowas machen wollte. :wink:
:x Ich habe 4.0.21. Mal in die MySQL-Change-Logs sehen...
Naja, wenn ich nen neuen Datensatz anlegen will (händisch), zählt er brav hoch. Mal abwarten, wie sich das entwickelt.

Danke nochmals.
Grüße
Faux