Startwert für Autoincrement setzen
Kai
- datenbank
0 Tobias Kloth0 andreas0 annA
Hallo,
kann ich bei einer mysql-DB den Startwert für eine Autoincrement bei Erstellung der Tabelle mit festlegen? Z. B. wenn ich bei 1000 anfangen möchte und von dort immer einen hoch zähle.
Viele Grüße
Kai
Hallo Kai,
kann ich bei einer mysql-DB den Startwert für eine Autoincrement bei Erstellung der Tabelle mit festlegen?
nein, auto_increment fängt bei 1 an. (siehe http://www.mysql.de/doc/de/CREATE_TABLE.html)
Z. B. wenn ich bei 1000 anfangen möchte und von dort immer einen hoch zähle.
dann musst du 999 Datensätze anlegen und wieder löschen, dann hat der nächste in der betreffenden Spalte 1000 stehen - ich weiß nur nicht, für was das gut sein soll...
Grüße aus Nürnberg
Tobias
»»ich weiß nur nicht, für was das gut sein soll...
das sehe ich genauso,
allerdings wenn ich eine leere tabelle erstelle und als erstes nur in den index den wert 1000 eintrage ist der nächste autoincrement wert bei mir 1001.
vielleicht ein fehler in meiner db.
mfg
andreas
Hallo andreas,
allerdings wenn ich eine leere tabelle erstelle und als erstes nur in den index den wert 1000 eintrage ist der nächste autoincrement wert bei mir 1001.
stimmt, das funktioniert auch (siehe auch den 2. Link im Posting von annA) - nur muss man beim manuellen setzen der Werte aufpassen, dass man keine erwischt, der schon vorhanden ist.
Grüße aus Nürnberg
Tobias
Hello,
stimmt, das funktioniert auch (siehe auch den 2. Link im Posting von annA) - nur muss man beim manuellen setzen der Werte aufpassen, dass man keine erwischt, der schon vorhanden ist.
Wenn man den Autoincrement auch als Unique angelegt hat (->Primärschlüssel), dann geht das gar nicht *bätsch*
Gibt bei Insert dann einen duplicate key error.
Grüße
Tom
Na ja, dass das eigentlich keinen Sinn macht ist schon klar. Ich hätte es gebraucht um Artikelnummern zu generieren. Der für den ich das mache, will aber nicht, dass sie bei 1 sondern bei 1000 starten und zerofill wäre auch nichts zumal ich dieses Feld nicht auf 4 Zahlen begrenzen will.
hi,
Na ja, dass das eigentlich keinen Sinn macht ist schon klar. Ich hätte es gebraucht um Artikelnummern zu generieren. Der für den ich das mache, will aber nicht, dass sie bei 1 sondern bei 1000 starten und zerofill wäre auch nichts zumal ich dieses Feld nicht auf 4 Zahlen begrenzen will.
dann hat der jenige den unterschied zwischen den daten im hintergrund und den werten, die man sich anzeigen lässt, noch nicht verstanden.
den wert in der DB bei 0 oder 1 starten zu lassen, und bei der _ausgabe_ 1000 drauf zu addieren, ist üblich.
aber den wert in der DB bei 1000 zu starten, ist sinnfrei.
gruss,
wahsaga
Danke, so habe ich es jetzt auch gemacht. ;-)
Hello,
dann hat der jenige den unterschied zwischen den daten im hintergrund und den werten, die man sich anzeigen lässt, noch nicht verstanden.
den wert in der DB bei 0 oder 1 starten zu lassen, und bei der _ausgabe_ 1000 drauf zu addieren, ist üblich.
aber den wert in der DB bei 1000 zu starten, ist sinnfrei.
Wohl noch nie was von konjunkten und disjunkten Datenmengen, Mischen, Sortieren, Abspalten ... gehört?
Kanndoch absolut sinnvoll sein, einen Bereich für spätere Verwendung freizuhalten!
Grüße
Tom
hi,
aber den wert in der DB bei 1000 zu starten, ist sinnfrei.
Wohl noch nie was von konjunkten und disjunkten Datenmengen, Mischen, Sortieren, Abspalten ... gehört?
doch.
aber noch nie, dass so etwas zwingend von einer auto-increment-id von > 1000 abhängig wäre.
Kanndoch absolut sinnvoll sein, einen Bereich für spätere Verwendung freizuhalten!
welchen unterschied macht es, ob ich nun bei 1000 anfang, und damit später noch den bereich von 0 - 999 frei habe - oder bei 0 anzufangen, und dann später noch den bereich über "grösster derzeitiger wert" frei zu haben?
gruss,
wahsaga
Hello,
welchen unterschied macht es, ob ich nun bei 1000 anfang, und damit später noch den bereich von 0 - 999 frei habe - oder bei 0 anzufangen, und dann später noch den bereich über "grösster derzeitiger wert" frei zu haben?
Na ich sag, doch, u hast noch nix von Mischen gehört...
Aber direktgestreute Dateien kennst Du, oder? Es gibt auch direktgestreute Primärschlüssel ;-)
Grüße
Tom
Hello,
nein, auto_increment fängt bei 1 an. (siehe http://www.mysql.de/doc/de/CREATE_TABLE.html)
dann musst du 999 Datensätze anlegen und wieder löschen, dann hat der nächste in der betreffenden Spalte 1000 stehen - ich weiß nur nicht, für was das gut sein soll...
Ist das jetzt Theorie oder Praxis?
Erfahrungsgemäß macht der Auto-Increment nach dem größten vorhandenen weiter, der jemals drinstand, wenn mindestens ein Datensatz in der DB ist. Löscht man jedoch alle Datensätze, dann fängt er bei 1 wieder an.
Ob dieses Verhalten allerdings verbrieft ist und was bei Overflow passiert, vermag ich nicht zu sagen. Es ist eben nur Praxiserfahrung.
Grüße
Tom
Hallo Tom,
nein, auto_increment fängt bei 1 an. (siehe http://www.mysql.de/doc/de/CREATE_TABLE.html)
dann musst du 999 Datensätze anlegen und wieder löschen, dann hat der nächste in der betreffenden Spalte 1000 stehen - ich weiß nur nicht, für was das gut sein soll...
Ist das jetzt Theorie oder Praxis?
Theorie - so einen Unfug mach ich nicht :-)
Erfahrungsgemäß macht der Auto-Increment nach dem größten vorhandenen weiter, der jemals drinstand, wenn mindestens ein Datensatz in der DB ist. Löscht man jedoch alle Datensätze, dann fängt er bei 1 wieder an.
das kommt darauf an, wie du die Datensätze löschst. Mit "DELETE FROM tabelle" wird auto_increment zurückgesetzt - wenn du aber eine WHERE-Klausel dranhängen hast, wird auto_increment nicht zurückgesetzt (auch wenn alle Datensätze gelöscht werden).
Ob dieses Verhalten allerdings verbrieft ist und was bei Overflow passiert, vermag ich nicht zu sagen.
mysql will wieder bei 1 anfangen: http://www.dclp-faq.de/q/q-mysql-inkrement.html (unten)
Grüße aus Nürnberg
Tobias
Hello,
das kommt darauf an, wie du die Datensätze löschst. Mit "DELETE FROM tabelle" wird auto_increment zurückgesetzt - wenn du aber eine WHERE-Klausel dranhängen hast, wird auto_increment nicht zurückgesetzt (auch wenn alle Datensätze gelöscht werden).
Fein! Wieder 'was gelernt. Lohnt sich doch immer wieder, reinzuschauen.
Grüße
Tom
ja, einfach dein index als erstes auf 1000 setzen und dann ganz
normal mit insert weitere werte hinzufügen
mfg
andreas
Hallo Kai,
wieso suchst Du denn nicht im Internet (zum Beispiel bei
http://www.google.de)?
Da hättest Du zum Beispiel so etwas finden könnne:
http://www.dclp-faq.de/q/q-mysql-inkrement.html
Habe es allerdings nicht getestet...
Gruß
annA