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 :
-
Créer une table temporaire : CREATE TEMPORARY TABLE NewIDs(NewID INT UNSIGNED AUTO_INCREMENT, OldID INT UNSIGNED).
-
Remplissez la table temporaire : INSERT INTO NewIDs (OldId) SELECT Id FROM OldTable ORDER PAR Id ASC.
-
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.
-
Réactiver la vérification des clés étrangères : SET Foreign_key_checks = 1.
-
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!