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

Aumenta automaticamente il riempimento del numero eliminato in precedenza

Allora non vuoi usare una colonna con incremento automatico. Se vuoi colmare le lacune, impostala su una colonna int e gestisci la logica in stored proc o insert.

MODIFICA:

Poiché è una colonna int, puoi ordinarli numericamente. Basta fare un SELECT Ids FROM Table Order By Ids per ottenere tutti gli ID e verificare le lacune nel set di dati restituito.

Probabilmente c'è un modo più semplice per farlo, ma potresti scorrere i risultati con un cursore e confrontarli con un INT variabile che aumenta durante il ciclo. Quando trovi uno spazio vuoto (nessuna corrispondenza), interrompi il ciclo e usa quel INT valore come INSERT id.

Non scriverò il tuo codice per te, ma questi sono alcuni passaggi per farti andare nella giusta direzione. Dovrebbe essere un pezzo di programmazione davvero semplice che dovresti essere in grado di gestire.

Spero che questo aiuti.

EDIT #2:

Come altri hanno notato, la tua mossa migliore è semplicemente lasciare gli spazi vuoti. A meno che non ci sia un limite sul tavolo per quanto riguarda la lunghezza e gli ID DEVONO essere 1-30 (strano), lascialo stare. Non c'è alcun vantaggio nel colmare le lacune.

EDIT #3:

Un'altra cosa da considerare:se devi davvero mantenere 1-30 per qualche motivo, non eliminare le righe. Aggiungi una colonna per contrassegnare ogni riga come attiva o meno, quindi aggiorna semplicemente le righe che sono inattive quando necessario e quindi contrassegnale come attive. Questo è MOLTO hacky, ma il tuo requisito è piuttosto hacky, quindi...