Maison  >  Article  >  base de données  >  Que dois-je faire si l’ID à croissance automatique de MySQL n’est pas continu ?

Que dois-je faire si l’ID à croissance automatique de MySQL n’est pas continu ?

WBOY
WBOYoriginal
2022-05-16 17:26:435839parcourir

Dans MySQL, "AUTO_INCREMENT" peut être utilisé pour résoudre le problème des identifiants d'auto-incrémentation discontinus. "AUTO_INCREMENT" est utilisé pour définir la croissance automatique de la clé primaire. Il suffit de définir l'auto-incrémentation de l'identifiant sur 1. la syntaxe est "ALTER TABLE nom de la table" AUTO_INCREMENT=1".

Que dois-je faire si l’ID à croissance automatique de MySQL n’est pas continu ?

L'environnement d'exploitation de ce tutoriel : système windows10, version mysql8.0.22, ordinateur Dell G3.

Que faire si l'identifiant d'incrémentation automatique MySQL n'est pas continu

MySQL définit des champs uniques dans Navicat :

Index (champs sélectionnés) >>> Type d'index (UNIQUE)

Lorsqu'il y a un champ unique dans dans la table, l'identifiant de la clé primaire provient de Lorsque le temps est augmenté, le champ unique existe déjà lors de l'insertion de nouvelles données. L'insertion échoue

mais l'identifiant a été incrémenté de +1 à ce moment. L'insertion de données provoque à nouveau le problème de. discontinuité du identité.

-- Après l'exécution, cela n'indique pas que l'identifiant inséré est défini sur 1, mais l'identifiant inséré est défini sur la valeur d'identifiant maximale dans le tableau + 1 ;

 ALTER TABLE `table` AUTO_INCREMENT =1;

Ajoutez l'instruction SQL ci-dessus avant l'opération d'insertion et définissez l'identifiant d'insertion sur l'identifiant existant dans la table actuelle + 1 ;

auto_increment est utilisé pour la croissance automatique de la clé primaire, à partir de 1, lorsque vous ajouter le premier Lorsque l'enregistrement est supprimé et que les données du deuxième saut sont insérées, la valeur de la clé primaire est 2 et non 1.

Par exemple :

create table `test`
(
`id` int(10) not null auto_increment, -- 表示自增列
`name` varchar(20) not null,
primary key(`id`)
)

auto_increment = 1; -- Indique la taille de départ de l'auto-incrémentation -- De cette façon, vous pouvez créer une table `test` avec l'identifiant comme colonne d'auto-incrémentation

-- Exécuter le instruction insérer dans les valeurs de test (`name`) ('name');

-- vous pouvez insérer une ligne de données sous la forme : 1 'name'

Informations étendues :

Lorsque vous utilisez AUTO_INCREMENT, vous devez faire attention aux points suivants :

1. AUTO_INCREMENT est une colonne de données. Cet attribut s'applique uniquement aux colonnes de données de type entier.

2. La colonne de données pour laquelle l'attribut AUTO_INCREMENT est défini doit être une séquence positive, la colonne de données doit donc être déclarée comme UNSIGNED, afin que le numéro de la séquence puisse être doublé.

3. La colonne de données AUTO_INCREMENT doit avoir un index unique pour éviter la duplication des numéros de série (c'est-à-dire qu'il s'agit de la clé primaire ou d'une partie de la clé primaire). La colonne de données AUTO_INCREMENT doit avoir l'attribut NOT NULL.

4. Le nombre maximum de colonnes de données AUTO_INCREMENT dépend du type de données de la colonne. Par exemple, le nombre maximum de colonnes de données TINYINT est 127. Si UNSIGNED est ajouté, le nombre maximum est 255. Une fois la limite supérieure atteinte, AUTO_INCREMENT devient invalide.

5. Lors de la suppression de la table entière, MySQL AUTO_INCREMENT redémarrera la numérotation à partir de 1.

En effet, lors de l'exécution d'une opération de table complète, MySQL (la meilleure combinaison avec PHP) effectue en fait une telle opération d'optimisation : supprimez d'abord toutes les données et tous les index de la table de données, puis reconstruisez la table de données.

Si vous souhaitez supprimer toutes les lignes de données et conserver les informations du numéro de séquence, vous pouvez utiliser une commande delete avec où supprimer l'optimisation de MySQL (la meilleure combinaison avec PHP) : delete from table_name où 1 ;

Apprentissage recommandé : tutoriel vidéo mysql

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