Maison  >  Article  >  base de données  >  Que renvoie MySQL lorsque nous modifions une valeur AUTO_INCRMENT inférieure au numéro de séquence actuel ?

Que renvoie MySQL lorsque nous modifions une valeur AUTO_INCRMENT inférieure au numéro de séquence actuel ?

PHPz
PHPzavant
2023-09-03 20:57:03702parcourir

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

Lorsque nous utilisons AUTO_INCREMENT sur une colonne MySQL, le numéro de séquence augmente toujours par ordre croissant, en commençant par la valeur par défaut de 1 ou la valeur que nous spécifions.

C'est pourquoi MySQL ne permet pas de changer la valeur AUTO_INCREMENT en une valeur inférieure au numéro de séquence actuel. Cela peut être compris à travers l'exemple suivant :

Exemple

Dans cet exemple, supposons que nous ayons une table nommée 'emp1' et lors de la création de la table, nous spécifions la valeur AUTO_INCREMENT sur 100. Ainsi, après avoir inséré les valeurs dans le tableau, la séquence commencera à 100 comme indiqué dans le résultat de la requête ci-dessous :

mysql> Select * from emp1;
+-----+---------+
| id | NAME     |
+-----+---------+
| 100 | Sohan   |
| 101 | Harshit |
+-----+---------+
2 rows in set (0.00 sec)

Maintenant, lorsque nous essayons de changer la valeur AUTO_INCRMENT à 90 à l'aide de la requête ALTER TABLE , MySQL ne renvoie pas l'erreur ni l'avertissement, car la requête fonctionne correctement, mais lorsque nous insérons une nouvelle valeur dans la table, MySQL compare la valeur AUTO_INCRMENT spécifiée avec le numéro de séquence actuel. Étant donné que la valeur AUTO_INCRMENT spécifiée (90) est inférieure au numéro de séquence actuel (101), MySQL commence à accumuler de nouvelles valeurs à partir de 102, ce qui peut être observé à partir de la requête suivante -

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)

Au contraire, si nous essayons de changer le AUTO_INCRMENT est supérieur au numéro de séquence actuel, alors MySQL accumulera de nouvelles valeurs à partir de la valeur spécifiée.

Pour afficher 'emp1' plus clairement dans le tableau, nous modifions la valeur AUTO_INCRMENT à 108, ce qui est supérieur au numéro de séquence actuel, afin que MySQL commence à accumuler les valeurs nouvellement insérées à partir de la valeur AUTO_INCRMENT spécifiée (c'est-à-dire à partir de 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)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer