Maison >base de données >tutoriel mysql >Comment réinitialiser les clés primaires à incrémentation automatique dans SQLite ?
Méthode de réinitialisation de la clé primaire par incrémentation automatique SQLite
La réinitialisation des valeurs de clé primaire à incrémentation automatique est un problème courant lorsque l'on travaille avec des bases de données SQLite. Cet article explorera cela et proposera des solutions efficaces.
Scénarios et questions
L'utilisateur a tenté de réinitialiser les champs d'incrémentation automatique pour plusieurs tables d'une base de données SQLite. Cependant, l'utilisation de la commande DELETE FROM
pour supprimer toutes les données ne réinitialise pas le champ à 0. En revanche, l'incrémentation automatique continue d'augmenter à partir de la dernière valeur après la suppression des données.
Explication détaillée
Ce problème survient car SQLite utilise une table distincte nommée SQLITE_SEQUENCE
pour garder une trace de la valeur ROWID la plus élevée dans chaque table. Lorsqu'un nouvel enregistrement est inséré, l'algorithme AUTOINCREMENT vérifie la table SQLITE_SEQUENCE
pour déterminer la prochaine valeur de clé primaire disponible.
La suppression des données de la table principale supprimera uniquement les lignes associées. SQLITE_SEQUENCE
Le tableau reste inchangé, ce qui fait que le compteur à incrémentation automatique continue d'incrémenter à partir de sa dernière valeur.
Solution
Pour réinitialiser le champ de clé primaire à la valeur souhaitée, exécutez les deux instructions suivantes :
<code class="language-sql">DELETE FROM your_table; DELETE FROM sqlite_sequence WHERE name='your_table';</code>
La première instruction supprime toutes les données de la table principale. La deuxième instruction supprime l'entrée de cette table dans la table SQLITE_SEQUENCE
, réinitialisant ainsi la valeur ROWID la plus élevée à 0.
Autres notes
SQLITE_SEQUENCE
tableau doit être effectuée avec prudence. 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!