Heim  >  Artikel  >  Datenbank  >  Was gibt MySQL zurück, wenn wir einen AUTO_INCRMENT-Wert ändern, der kleiner als die aktuelle Sequenznummer ist?

Was gibt MySQL zurück, wenn wir einen AUTO_INCRMENT-Wert ändern, der kleiner als die aktuelle Sequenznummer ist?

PHPz
PHPznach vorne
2023-09-03 20:57:03702Durchsuche

当我们更改小于当前序列号的 AUTO_INCRMENT 值时,MySQL 返回什么?

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:

Beispiel

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen