sql >> Database teknologi >  >> RDS >> Mysql

Gør automatisk stigning til at udfylde tidligere slettede nummer

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å...



  1. SELECT, der returnerer en liste over værdier, der ikke forekommer i nogen række

  2. Installer webserver i Windows XP med Apache2, PHP5 og MySQL4 – del 1

  3. Hvordan fungerer MySQL-indekser?

  4. Hvordan starter jeg automatisk stigning fra et bestemt punkt?