Maison > base de données > tutoriel mysql > le corps du texte

Devez-vous combler les lacunes dans les champs à incrémentation automatique ?

Patricia Arquette
Libérer: 2024-11-10 13:12:03
original
664 Les gens l'ont consulté

Should You Fill Gaps in Auto-Increment Fields?

Résoudre les lacunes dans les champs à incrémentation automatique

Le but des champs à incrémentation automatique est uniquement d'identifier de manière unique les enregistrements dans une base de données. Bien qu'il puisse sembler souhaitable de combler les lacunes créées par les enregistrements supprimés, cela est généralement considéré comme une mauvaise pratique de base de données.

Défauts dans les stratégies de remplissage des lacunes

Tentatives de combler les lacunes peut conduire à :

  • Conception de base de données défectueuse : Ce qui implique que les identifiants à incrémentation automatique ont une pertinence spécifique au-delà de leur utilisation comme identifiants d'enregistrement.
  • Erreurs de manipulation des données : Modification involontaire des données ou introduction d'incohérences.

Considérations alternatives

Plutôt que de combler les lacunes, considérez les éléments suivants alternatives :

  • Réservez les lacunes futures : Ajoutez des lacunes suffisamment grandes à la fin de la séquence d'identification pour tenir compte des suppressions futures potentielles.
  • Documentez les lacunes :Fournir une documentation expliquant la signification des lacunes, le cas échéant.
  • Éviter suppressions inutiles : Si possible, évitez de supprimer des enregistrements de tables avec des champs à incrémentation automatique.

Forcer le remplissage des espaces dans MySQL (avancé)

En cas d'absolue nécessité, combler les lacunes de MySQL nécessite une procédure avancée :

  1. Créer une table temporaire : CREATE TEMPORARY TABLE NewIDs(NewID INT UNSIGNED AUTO_INCREMENT, OldID INT UNSIGNED).
  2. Remplissez la table temporaire : INSERT INTO NewIDs (OldId) SELECT Id FROM OldTable ORDER PAR Id ASC.
  3. Mettre à jour le parent et tables enfants : UPDATE Parent, Child, NewIds SET Parent.ParentId = NewIds.Id, Child.ParentId = NewIds.Id WHERE Parent.ParentId = NewIds.ParentId AND Child.ParentId = NewIds.ParentId.
  4. Réactiver la vérification des clés étrangères : SET Foreign_key_checks = 1.
  5. Supprimez la table temporaire : DROP TABLE NewIds.

Cependant, il est fortement conseillé de procéder avec prudence lorsque vous envisagez cette approche en raison de son risques inhérents.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal