Ü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:
TINYINT UNSIGNED - Wertebereich 0 bis 255.
SMALLINT UNSIGNED - Wertebereich 0 bis 65535.
MEDIUMINT UNSIGNED - Wertebereich 0 bis 16777215.
INT UNSIGNED - Wertebereich 0 bis 4294967295.
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






