Heim > Datenbank > MySQL-Tutorial > 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
Freigeben: 2023-09-03 20:57:03
nach vorne
828 Leute haben es durchsucht

当我们更改小于当前序列号的 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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage