sql >> Database >  >> RDS >> Mysql

Laat automatisch ophogen het eerder verwijderde nummer vullen

U wilt dan geen automatisch oplopende kolom gebruiken. Als je de gaten wilt opvullen, stel deze dan in op een int-kolom en behandel de logica in opgeslagen proc of insert.

BEWERKEN:

Omdat het een int-kolom is, kunt u ze numeriek ordenen. Doe gewoon een SELECT Ids FROM Table Order By Ids om alle ID's op te halen en te controleren op hiaten in de geretourneerde dataset.

Er is waarschijnlijk een vlottere manier om dit te doen, maar je zou de resultaten met een cursor kunnen herhalen en vergelijken met een INT variabele die gedurende de hele lus toeneemt. Als je een gat vindt (geen overeenkomst) - doorbreek de lus en gebruik die INT waarde als uw INSERT ID kaart.

Ik zal uw code niet voor u schrijven, maar dit zijn enkele stappen om u op weg te helpen in de goede richting. Het zou een heel basaal stukje programmeren moeten zijn dat je aan zou moeten kunnen.

Ik hoop dat dit helpt.

BEWERKEN #2:

Zoals anderen al hebben opgemerkt, is je beste zet om gewoon de gaten te laten. Tenzij er een limiet op de tafel ligt wat de lengte betreft en de ID's 1-30 (raar) MOETEN zijn, laat het met rust. Het heeft geen zin om de gaten op te vullen.

BEWERK #3:

Nog iets om over na te denken:als u om de een of andere reden echt 1-30 moet behouden, verwijder dan uw rijen niet. Voeg een kolom toe om elke rij als actief of niet te markeren en werk vervolgens de rijen bij die inactief zijn wanneer dat nodig is en markeer ze vervolgens als actief. Dit is ZEER hacky, maar je eis is nogal hacky, dus...



  1. Hoe XMLTYPE in VARCHAR in ORACLE te converteren?

  2. MySQL-zelfstudie - SSL configureren en beheren op uw MySQL-server

  3. Voeg twee tabellen samen in Php

  4. Hoe kan ik een database onder git (versiebeheer) plaatsen?