mySQL - auto_increment

  • #1
C

Cledith

Bekanntes Mitglied
Themenersteller
Dabei seit
04.11.2001
Beiträge
1.210
Reaktionspunkte
0
hallo allerseits,
ich wollte mal was bezüglich des auto_inremens nachfragen.

Wenn ich eine Tabelle habe und z.b. eine Spalte id, die durch das auto_increment jeweils bei einem neuen Eintrag um 1 erhöht wird, dann wird jeweils die ID benutzt, die eigentlich zuletzt frei war.

Beispiel:
es sind 4 Zeilen in der Tabelle, d.h. die IDs 1-4 wurden benutzt. Nun wird Zeile 2 aber gelöscht, so dass ID=2 auch wieder frei ist. MySQL erlaubt ja nun die erneute Bebnutzung der ID=2. Doch wenn ich nun eine weitere Zeile durch PHP hinzufüge, dann bekommt diese die ID = 5 und nicht ID=2. Kann man das einstellen, dass er grundsätzlich die kleinstmögliche freie ID verwendet oder geht das nur über ein PHP Script?
 
  • #2
Hi

Kann man meines Wissens nicht direkt einstellen, beim CREATE TABLE statement gibts mittlerweile eine Option die festlegt mit welcher id er weitermachen soll.
Aber IDs erneut zu vergeben macht auch keinen Sinn, sieht zwar hässlich aus aber mit der Zeit erkennt man die Vorteile.

Bsp:
Die hast eine Liste mit Einträgen, wo jeder Name mit dem Eintrag verlinkt ist. Dann hast du eine History wo du dir merkst welche Einträge du gelöscht hast, diese werden in der Liste dann nicht mehr verlinkt weil der Eintrag nicht mehr existiert.
Wenn du dass jetzt so programmierst dass du nur einen Link setzt wenn die ID in der DB existiert und dabei aber eine gelöschte ID neubelegst, so verlinkst du auf einen ganz anderen Eintrag.

Gruß, Michael
 
  • #3
Da hast du vollkommen recht. Prinzipiell macht das so auch mehr Sinn. Nur habe ich ein GB, in dem die ID gleichzeit der EIntrag ist. Jetzt spiele ich damit gerade rum und wenn ich was getestet habe, dann lösche ich diesen Eintrag und darf die Tabelle dann jedes mal wieder neu kreiieren, weil er nicht wieder bei ID=0 anfängt... :(

Deswegen nur die Frage.
 
  • #4
Hi

Für einen Eintragszähler solltest du nicht den Primärschlüssel missbrauchen 8) sondern z.B. in PHP einen einfachen Zähler mitlaufen lassen.

Gruß, Michael
 
  • #5
warum nicht? einträge sollen ja nie welche gelöscht werden.
dann kann ich doch auch gleich das auto_increment benutzen, um dies zu erreiche. natürlich kann ich auch PHP mitzählen lassen. Aber das ist doch nur mehr Code ;D

Oder hat das noch nen anderen Grund?
 
  • #6
Wo ist ein einfacher Counter großartig mehr Code? Im Höchstfall zwei Zeilen! Im übrigen kannst du ja eins machen (ist aber mit Vorsicht zu genießen), nachdem du einen Eintrag gelöscht hast lässt du die Tabelle neu indizieren!
 
  • #7
aber das ist es ja. es soll sich ja hierbei um den Gästebuch handeln. In diesem Gästebuch werden keine Einträge löschbar sein.
 
  • #8
In einem Gästebuch sollten die Einträge auf jeden Fall löschbar sein. Jedenfalls für den Admin. Wenn so ein Depp in deinem GB Leute beleidigt, solltest du diesen Eintrag schnellstmöglich entfernen, sonst pissen sie DIR ans Bein
:)

Von daher würd ich das Problem mit dem auto_increment einfach bleiben lassen und nen PHP-Counter einbauen (die ZWEI anweisungen hättest du schneller eingebaut, als hier zu posten :D)

Greetz
M.
 
  • #9
Aber das ist ein Irrtum, dass Einträge gelöscht werden müssen. Sie können auch editiert werden, so dass entsprechende Einträge nicht mehr kenntlich sind.

Wobei ich ehrlich geagt nicht weiß, wie oft so ein blöder Eintrag gemacht wird. Ich meine, wenn es mal ein Eintrag ist, der daneben ging und man diesen dann editiert, dann ist das ja kein Problem. Was aber nun, wenn z.B. 10 dieser unvollkommenen Einträge hintereinander gemacht werden. Dann würden dort 10 Einträge mit einem Inhalt wie Regelverstoß oder so was stehen. Ist ja irgendwie auch nervig.

Das wird wohl nur die Zeit zeigen, wa? Es wäre dann natürlich gänzlich unpraktisch, dass im nachhinein noch ändern zu müssen. Also habt ihr wohl gar nicht so unrecht. Ich werde das wohl doch mit nem internen Zähler machen, um späteren Konflikten vorbeugen zu können.
 
  • #10
Wer ein Gästebuch ohne Löschfunktionalität baut ist selber schuld.

Es gibt in den Gästebüchern genügend Einträge, die, falls man sie editiert, nichts mehr übrigbleibt. Was soll ich dann noch mit dem Eintrag?

Übrigens: mein Gästebuch hat eine solche Löschfunktionalität. Es kann frei genutzt werden. Der Download befindet sich hier.
 
Thema:

mySQL - auto_increment

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben