Vous ne voulez pas utiliser une colonne auto-incrémentée alors. Si vous souhaitez combler les lacunes, définissez-la sur une colonne int et gérez la logique dans proc stocké ou insert.
MODIFIER :
Puisqu'il s'agit d'une colonne int, vous pouvez les ordonner numériquement. Faites simplement un SELECT Ids FROM Table Order By Ids
pour obtenir tous les identifiants et vérifier les lacunes dans l'ensemble de données renvoyé.
Il existe probablement une manière plus simple de procéder, mais vous pouvez boucler les résultats avec un curseur et les comparer à un INT
variable qui s'incrémente tout au long de la boucle. Lorsque vous trouvez un écart (pas de correspondance) - rompez la boucle et utilisez ce INT
valeur comme votre INSERT
identifiant.
Je n'écrirai pas votre code pour vous, mais ce sont quelques étapes pour vous aider à aller dans la bonne direction. Il devrait s'agir d'un élément de programmation vraiment basique que vous devriez être capable de gérer.
J'espère que cela vous aidera.
MODIFICATION #2 :
Comme d'autres l'ont noté, votre meilleur coup est de simplement laisser les lacunes. À moins qu'il n'y ait un plafond sur la table en ce qui concerne la longueur et que les identifiants DOIVENT être compris entre 1 et 30 (bizarre), laissez-le tranquille. Il n'y a aucun avantage à combler les lacunes.
MODIFICATION #3 :
Une dernière chose à considérer :si vous devez vraiment conserver 1-30 pour une raison quelconque, ne supprimez pas vos lignes. Ajoutez une colonne pour marquer chaque ligne comme active ou non, puis mettez simplement à jour les lignes inactives lorsque vous en avez besoin, puis marquez-les comme actives. C'est TRÈS hacky, mais votre exigence est un peu hacky, alors...