Il y a déjà eu beaucoup de bonnes réponses à cette question qui se résument à "Cela dépend des circonstances", et je ne peux rien y ajouter.
Une chose qui n’a pas été mentionnée, cependant, et qui, à mon avis, mérite d’être mentionnée, est que vous ne devriez jamais réutiliser des clés primaires générées par une séquence ou un système AUTO_INCREMENT.
Lorsque vous supprimez un élément auquel une clé primaire a été affectée par un tel système, il y aura des trous dans la colonne de clé primaire, laissée par les données supprimées. La tentation est grande de réattribuer ces lacunes à de nouveaux éléments au fur et à mesure de leur ajout ou, pire encore, de mélanger les données existantes pour leur attribuer un nouvel identifiant afin de les éliminer, mais cela entraînerait des problèmes ne jamais avoir à traiter si vous venez de laisser les clés seul.
Supposons que vous gardiez une base d'imprimantes pour gérer les consommables de réorganisation. L’imprimante 13, une ancienne imprimante laser, tombe en panne de manière économique, vous la jetez donc à la poubelle. Pendant ce temps, pour une raison quelconque, quelqu'un commande une nouvelle imprimante thermique pour l'impression de codes à barres dans l'entrepôt et cette imprimante arrive avant le remplacement de l'imprimante 13. L'administrateur enregistre cette nouvelle imprimante dans la base de données et, étant donné que 13 est maintenant gratuit et vous recyclez les ID, la nouvelle imprimante thermique se voit attribuer 13 comme ID.
Maintenant, quelqu'un vous dit que l'imprimante 13 est presque vide. Vous vous rappelez que l’imprimante 13 est une imprimante laser, vous ne cherchez donc pas dans la base de données et vous commandez une cartouche de toner. Vous n’aviez réellement besoin que de commander un paquet d’encre thermique, car l’imprimante 13 n’est plus une imprimante laser. Lorsque la cartouche de toner arrive, vous ne pouvez plus l’utiliser car il s’agit d’une mauvaise recharge d’encre pour l’imprimante. Vous ne pouvez plus imprimer de codes à barres ni expédier de commandes en attente d’expédition.
Pire encore, que se passe-t-il si vous supprimez l'imprimante 13 et que vous mélangez toutes les imprimantes qui le suivent pour combler le vide? L'imprimante 14 (une vieille matrice de points décrépit) devient l'imprimante 13, l'imprimante 15 devient l'imprimante 14 et ainsi de suite.
Toutes les imprimantes ont des étiquettes sur elles afin qu'elles puissent être référencées avec la base de données, mais maintenant toutes les étiquettes sont obsolètes. Vous devrez faire le tour, localiser toutes les imprimantes de l'entreprise (qui pourraient en contenir des centaines!) Et les renommer. Ce n'est pas une utilisation efficace du temps. Et c'est aussi un processus sujet aux erreurs, et que se passe-t-il si cela ne se fait jamais? Quelqu'un appelle pour dire que l'imprimante 14 est en panne et doit être réparée de toute urgence. Vous devez donc vérifier si l'imprimante 14 est une imprimante à jet d'encre en réception. Seulement parce que vous avez mélangé les identifiants, c'est en fait l'imprimante matricielle qui doit être réparée de toute urgence. Le gars qui a appelé le problème reste en suspens, alors que la réceptionniste a un technicien du support technique qu'elle n'a jamais appelé pour venir réparer une imprimante qui n'était pas en panne.
Les identifiants attribués par un système à incrémentation automatique doivent être considérés comme permanents, ils sont immuables et ne peuvent pas être réutilisés, même si l'élément auquel l'identifiant fait référence cesse d'exister. Certaines personnes affirment ne pas vouloir s'inquiéter du manque d'identifiants, mais même avec des systèmes 32 bits et des identifiants signés, il reste environ 2 milliards d'identifiants disponibles. Si vous pouvez supprimer la signature de la colonne ID, le nombre d'ID disponibles sur les systèmes 64 bits est littéralement supérieur au nombre d'étoiles dans le ciel. Vous n'allez pas manquer d'identifiants.