Wenn wir AUTO_INCREMENT für eine MySQL-Spalte verwenden, erhöht sich die Sequenznummer immer in aufsteigender Reihenfolge, beginnend mit dem Standardwert 1 oder dem von uns angegebenen Wert.
Aus diesem Grund erlaubt MySQL keine Änderung des AUTO_INCREMENT-Werts auf einen Wert, der kleiner als die aktuelle Sequenznummer ist. Dies kann anhand des folgenden Beispiels verstanden werden:
Angenommen, wir haben in diesem Beispiel eine Tabelle mit dem Namen „emp1“ und geben beim Erstellen der Tabelle den AUTO_INCREMENT-Wert als 100 an. Nach dem Einfügen der Werte in die Tabelle beginnt die Sequenz also bei 100, wie in der Ausgabe der folgenden Abfrage gezeigt:
mysql> Select * from emp1; +-----+---------+ | id | NAME | +-----+---------+ | 100 | Sohan | | 101 | Harshit | +-----+---------+ 2 rows in set (0.00 sec)
Nun versuchen wir, den AUTO_INCRMENT-Wert mit Hilfe der ALTER TABLE-Abfrage auf 90 zu ändern , MySQL gibt den Fehler und die Warnung nicht zurück, da die Abfrage einwandfrei funktioniert, aber wenn wir einen neuen Wert in die Tabelle einfügen, vergleicht MySQL den angegebenen AUTO_INCRMENT-Wert mit der aktuellen Sequenznummer. Da der angegebene AUTO_INCRMENT-Wert (90) kleiner als die aktuelle Sequenznummer (101) ist, beginnt MySQL ab 102 neue Werte zu akkumulieren, was anhand der folgenden Abfrage beobachtet werden kann:
mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 90; Query OK, 2 rows affected (0.31 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> Insert into emp1(name) values('Aryan'); Query OK, 1 row affected (0.08 sec) mysql> Select * from emp1; +-----+---------+ | id | NAME | +-----+---------+ | 100 | Sohan | | 101 | Harshit | | 102 | Aryan | +-----+---------+ 3 rows in set (0.00 sec)
Im Gegenteil, wenn wir versuchen, Änderungen vorzunehmen Wenn AUTO_INCRMENT höher als die aktuelle Sequenznummer ist, sammelt MySQL neue Werte ab dem angegebenen Wert.
Um „emp1“ in der Tabelle deutlicher anzuzeigen, ändern wir den AUTO_INCRMENT-Wert auf 108, was höher als die aktuelle Sequenznummer ist, sodass MySQL beginnt, neu eingefügte Werte ab dem angegebenen AUTO_INCRMENT-Wert zu akkumulieren (d. h. beginnend bei 108).
mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 108; Query OK, 3 rows affected (0.30 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> Insert into emp1(name) values('Daksh'); Query OK, 1 row affected (0.04 sec) mysql> Insert into emp1(name) values('Yashraj'); Query OK, 1 row affected (0.06 sec) mysql> Select * from emp1; +-----+---------+ | id | NAME | +-----+---------+ | 100 | Sohan | | 101 | Harshit | | 102 | Aryan | | 108 | Daksh | | 109 | Yashraj | +-----+---------+ 5 rows in set (0.00 sec)
Das obige ist der detaillierte Inhalt vonWas gibt MySQL zurück, wenn wir einen AUTO_INCRMENT-Wert ändern, der kleiner als die aktuelle Sequenznummer ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!