WinFuture-Forum.de: Mysql Auto_increment - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Mysql Auto_increment


#1 Mitglied ist offline   stefanra 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.208
  • Beigetreten: 13. September 04
  • Reputation: 1

geschrieben 03. November 2004 - 16:38

Hallo,

ich habe eine Frage zu MySQL.

Ich habe eine Tabelle mit vielen Einträgen, die als Primary-Key das Feld "id" mit der Funktion "auto_increment" besitzen.

Wenn ich jetzt den letzten Eintrag lösche, so wird, sofern ich einen neuen Eintrag erstelle, nicht die id des gelöschten Beitrags verwendet, sondern die nächste ID und ich habe eine Lücke in meiner Tabelle.

Das ist zwar nicht so schlimm, es stört aber doch.

Gibt es eine Funktion in MySQL, die den nächsten Wert für ein Feld mit der Besonderheit "auto_increment" neu berechnet oder muss ich das mit einem Skript und einer kleinen Abfrage nach der letzten ID machen bzw. wie kann ich den nächsten Wert für "auto_increment" setzen.

Vielen Dank!

Gruß, stefanra
0

Anzeige



#2 Mitglied ist offline   Matze 

  • Gruppe: aktive Mitglieder
  • Beiträge: 666
  • Beigetreten: 29. Februar 04
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 03. November 2004 - 17:01

Nein das funktioniert leider nicht. :veryangry:

Zitat

Der Grund warum 'autoincrement' (es steckt ja schon im Namen) keine Lücken schließt liegt einfach in der möglichen Referenzierung. Insbesondere, da MySQL keine referenzielle Integrität behandelt, kann er nicht einfach anfangen und 'verbrauchte IDs' neu vergeben. Denn MySQL weiß ja nicht, welche anderen Datensätze evtl noch an diese ID gebunden sind. Größere DBs wie z.B. Oracle können dies. Tun es aber auch nicht.

Lorem ipsum dolor sit amet, consetetur sadipscing elitr.
0

#3 Mitglied ist offline   stefanra 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.208
  • Beigetreten: 13. September 04
  • Reputation: 1

geschrieben 03. November 2004 - 17:03

Schade, aber trotzdem Danke für deine Hilfe!
0

#4 _PelzigesWaldtier_

  • Gruppe: Gäste

geschrieben 06. November 2004 - 20:32

Etwas wuerde vielleicht gehen...

Wenn du

ALTER TABLE tabelle PACK_KEYS =0 CHECKSUM =0 DELAY_KEY_WRITE =0 AUTO_INCREMENT =0


ausfuehrst, dann setzt er beim naechsten Einfuegen fuer id bei dem hoechsen vorhandenen Wert fuer id fort.

Sprich:

Ich habe einen Datensatz mit id=6 und fuege einen neuen ein, der die id=9 hat. Das kommt daher, da ih vorher etliche Datensaetze geloescht habt. Bla, bla, bla, ... Dann fuehre ich oben gennantes Query aus und fuege einen neuen Datensatz ein (nachdem ich den Testetrag id=9 geloescht habe). Der neue Eintrag hat dann die id=7. So hats bei mir geklappt. Wie man allerdings Luecken zwischen den Eintragen fuellt weiss ich auch nicht.

-PelzigesWaldtier
0

#5 Mitglied ist offline   stefanra 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.208
  • Beigetreten: 13. September 04
  • Reputation: 1

geschrieben 08. November 2004 - 16:07

@PelzigesWaldtier: Danke für den Tipp.

Habe es inzwischen so umgesetzt und es funktioniert so, wie ich es mir gedacht habe.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0