Så ønsker du ikke at bruge en kolonne med automatisk stigning. Hvis du vil udfylde hullerne, skal du indstille den til en int-kolonne og håndtere logikken i lagret proc eller insert.
EDIT:
Da det er en int-kolonne, kan du bestille dem numerisk. Bare lav en SELECT Ids FROM Table Order By Ids
for at få alle Id'erne og kontrollere for hullerne i det returnerede datasæt.
Der er sandsynligvis en mere jævn måde at gøre dette på, men du kan sløjfe resultaterne med en markør og sammenligne med en INT
variabel, der stiger gennem løkken. Når du finder et hul (ingen match) - bryd løkken og brug den INT
værdi som din INSERT
id.
Jeg vil ikke skrive din kode for dig, men det er nogle trin til at få dig i den rigtige retning. Det burde være en virkelig grundlæggende smule programmering, du burde kunne håndtere.
Håber dette hjælper.
REDIGERING #2:
Som andre har bemærket, er dit bedste træk bare at forlade hullerne. Medmindre der er en kasket på bordet for så vidt angår længde og Ids SKAL være 1-30 (underligt), lad det være. Der er ingen fordel ved at udfylde hullerne.
REDIGERING #3:
En ting mere at overveje:Hvis du virkelig skal beholde 1-30 af en eller anden grund, skal du ikke slette dine rækker. Tilføj en kolonne for at markere hver række som aktiv eller ej, og opdater så bare de rækker, der er inaktive, når du har brug for det, og marker dem derefter som aktive. Dette er MEGET hacky, men dit krav er lidt hacky, så...