Maison > base de données > tutoriel mysql > 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
Libérer: 2023-09-03 20:57:03
avant
742 Les gens l'ont consulté

当我们更改小于当前序列号的 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)
Copier après la connexion

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)
Copier après la connexion

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)
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal