Wieso ist user_id kein AUTO_INCREMENT?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
faux
Mitglied
Beiträge: 59
Registriert: 29.03.2005 20:57
Kontaktdaten:

Wieso ist user_id kein AUTO_INCREMENT?

Beitrag 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
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Wieso würden denn die Bilder, beim Löschen eines Users, falsch zugeordnet werden? :-?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Re: Wieso ist user_id kein AUTO_INCREMENT?

Beitrag 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.
Dave
Mitglied
Beiträge: 2085
Registriert: 25.05.2003 15:03
Wohnort: Wuppertal

Beitrag 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
Benutzeravatar
faux
Mitglied
Beiträge: 59
Registriert: 29.03.2005 20:57
Kontaktdaten:

Beitrag 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
Zuletzt geändert von faux am 01.09.2006 21:04, insgesamt 1-mal geändert.
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag 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 ;-)
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag 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:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
faux
Mitglied
Beiträge: 59
Registriert: 29.03.2005 20:57
Kontaktdaten:

Beitrag 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
Antworten

Zurück zu „Coding & Technik“