17.12. Wie lege ich den Initialwert des auto_increment fest? Läuft dieser Wert über?Antwort von Daniel T. GorskiÜblicherweise benutzt man Werte ohne Vorzeichen (UNSIGNED) für den Typ des auto_increment-Feldes. Ab der MySQL Server-Version 3.23 ist es auch nicht mehr möglich, in diesen Feldern negative Zahlen zu führen. Geeignete Datentypen für auto_increment wären:
Für die meisten Anwendungen ist der Datentyp INT UNSIGNED mehr als ausreichend - immerhin ermöglicht dieser eine Adressierung von über vier Milliarden Datensätzen! Der Initialwert des auto_increment-Feldes ist 1. Um diesen Wert zu ändern, muss man ihn explizit setzen: mysql> DELETE FROM bar; mysql> INSERT bar SET INHALT='erster Datensatz'; mysql> SELECT * FROM bar; +----+------------------+ | ID | INHALT | +----+------------------+ | 1 | erster Datensatz | +----+------------------+ mysql> INSERT bar SET ID='1000', INHALT='zweiter Datensatz'; mysql> SELECT * FROM bar; +------+-------------------+ | ID | INHALT | +------+-------------------+ | 1 | erster Datensatz | | 1000 | zweiter Datensatz | +------+-------------------+ mysql> INSERT bar SET INHALT='dritter Datensatz'; mysql> SELECT * FROM bar; +------+-------------------+ | ID | INHALT | +------+-------------------+ | 1 | erster Datensatz | | 1000 | zweiter Datensatz | | 1001 | dritter Datensatz | +------+-------------------+ Der auto_increment-Wert läuft nicht über - d.h. er wird nicht wieder negativ (bzw. Null bei UNSIGNED), wenn er über seinen Wertebereich hinaus adressiert wird. Stattdessen wird MySQL einen Fehler melden: mysql> INSERT bar SET ID='4294967295', INHALT='letzter Datensatz'; mysql> SELECT * FROM bar; +------------+-------------------+ | ID | INHALT | +------------+-------------------+ | 1 | erster Datensatz | | 1000 | zweiter Datensatz | | 1001 | dritter Datensatz | | 4294967295 | letzter Datensatz | +------------+-------------------+ mysql> INSERT bar SET INHALT='geht noch einer rein?'; ERROR 1062: Duplicate entry '4294967295' for key 1 |
||
17.12. Wie lege ich den Initialwert des auto_increment fest? Läuft dieser Wert über? http://www.php-faq.de/q/q-mysql-inkrement.html |
||
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team |