Mysql
 sql >> Base de données >  >> RDS >> Mysql

INSERT IGNORE augmente le compteur d'incrémentation automatique même si aucun enregistrement n'est ajouté ?

Citant la page de manuel pour INSERT :

Le INSERT IGNORE La syntaxe est juste un moyen de supprimer certains messages d'erreur et elle est utile lorsque vous savez que ces erreurs peuvent se produire et/ou que vous souhaitez les gérer ultérieurement. Dans les coulisses, vous avez toujours une insertion régulière, sauf qu'elle échoue en raison d'une clé violée. MySQL a besoin des valeurs de ligne réelles pour effectuer une insertion et le compteur AUTO_INCREMENT s'incrémentera selon règles régulières :

  1. La valeur de la colonne est NULL.
  2. La valeur de la colonne n'est pas définie.
  3. La valeur de la colonne est supérieure au compteur.

Donc, à moins que vous ne puissiez repenser votre logique (par exemple, tester si les valeurs clés existent avant de faire l'insertion), la seule façon de réinitialiser le compteur est ALTER TABLE :

ALTER TABLE t2 AUTO_INCREMENT = value;