MYSQL : l’Auto increment : Réinitialisation , Maximun , Recupération dernier id ..

La base de données MySQL propose la fonctionnalité de l’index Auto increment .

Votre table de base de données peut définir sa clé primaire comme numéro d’Autoincrement (super pratique )  et MySQL gérera cette valeur unique lors des nouveaux enregistrement.

Chaque fois que vous ajoutez une nouvelle ligne, MySQL incrémente automatiquement la valeur et la ajoute dans la table.

Mais parfois, vous pouvez réinitialiser la valeur de la colonne Autoincrement à 1, disons que vous écrivez un exemple d’application et que vous avez déjà inséré quelques lignes dans le tableau. Vous voulez maintenant supprimer ces lignes et réinitialiser la colonne d’auto-incrément à 1 pour que la nouvelle ligne que vous insérez ait la valeur de clé primaire 1. Il existe peu de méthodes pour y parvenir.

  1. Réinitialisation directe de la valeur de l’auto-incrément

Modifier la syntaxe de la table permet de réinitialiser la colonne d’auto-incrément. Jetez un coup d’œil à l’exemple suivant.

ALTER TABLE nom_table AUTO_INCREMENT = 1 ;

Notez que vous ne pouvez pas réinitialiser le compteur à une valeur inférieure ou égale à celles qui ont déjà été utilisées.

  • Pour MyISAM, si la valeur est inférieure ou égale à la valeur maximale actuellement dans la colonne AUTO_INCREMENT, la valeur est réinitialisée au maximum actuel plus un.
  • Pour InnoDB, si la valeur est inférieure à la valeur maximale actuelle de la colonne, aucune erreur ne se produit et la valeur de la séquence actuelle n’est pas modifiée.
  1. TRuNcATE la table

Le tableau truncate réinitialise automatiquement les valeurs de l’incrément automatique à 0.

TRUNCATE TABLE nom_table ;

Utilisez-le avec prudence car vous perdez vos données.

Lorsque le truncate est utilisé, cela remet à zéro tout compteur AUTO_INCREMENT.

A partir de MySQL 5.0.13, le compteur AUTO_INCREMENT est remis à zéro par TRUNCATE TABLE, qu’il y ait ou non une contrainte clé étrangère.

Une fois que TRUNCATE est lancé, le gestionnaire de table ne se souvient plus de la dernière valeur AUTO_INCREMENT utilisée, mais commence à compter depuis le début. Ceci est vrai même pour MyISAM et InnoDB, qui ne réutilisent normalement pas les valeurs de séquence.

3.AutoIncrement Maximun

Cela dépends du type assingé à la colonne

(source mysql : https://dev.mysql.com/doc/refman/8.0/en/integer-types.html ) 

Storage (Bytes) Minimum Value Signed Minimum Value Unsigned Maximum Value Signed Maximum Value Unsigned
TINYINT 1 -128 0 127 255
SMALLINT 2 -32768 0 32767 65535
MEDIUMINT 3 -8388608 0 8388607 16777215
INT 4 -2147483648 0 2147483647 4294967295
BIGINT 8 -263 0 263-1 264-1

Exemple :

ALTER TABLE `maDB`.`new_table` 
CHANGE COLUMN `idnew_table` `idnew_table` BIGINT(255) NOT NULL AUTO_INCREMENT ;
4.Débuter l’autoincrément d’une autre valeur que 1

Par défaut, l’auto-increment débute à “1” et s’incrémentera de 1 pour chaque nouvel enregistrement. Il est possible de modifier la valeur initiale avec la requête SQL suivante :

exemple pour débuter à 10

ALTER TABLE `nom_table` AUTO_INCREMENT=10;
5.Récupérer le derniere ID auto inséré

Vous pouvez récupérer la dernière valeur AUTO_INCREMENT générée automatiquement avec la fonction SQL LAST_INSERT_ID() ou la fonction mysql_insert_id() .

Ces fonctions sont spécifiques à la connexion, de sorte que leurs valeurs de retour ne sont pas affectées par une autre connexion qui effectue également des inserts.

select last_insert_id()
Étiquettes : ,

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *