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 ?
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 :
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!