Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Faça com que o incremento automático preencha o número excluído anteriormente


Você não quer usar uma coluna de incremento automático então. Se você quiser preencher as lacunas, defina-o como uma coluna int e manipule a lógica no proc armazenado ou insert.

EDITAR:


Como é uma coluna int, você pode ordená-los numericamente. Basta fazer um SELECT Ids FROM Table Order By Ids para obter todos os IDs e verificar as lacunas no conjunto de dados retornado.

Provavelmente há uma maneira mais suave de fazer isso, mas você pode fazer um loop dos resultados com um cursor e comparar com um INT variável que aumenta ao longo do loop. Quando você encontrar uma lacuna (sem correspondência) - quebre o loop e use esse INT valor como seu INSERT Eu iria.

Não vou escrever seu código para você, mas esses são alguns passos para levá-lo na direção certa. Deve ser um pouco de programação realmente básico que você deve ser capaz de lidar.

Espero que isto ajude.

EDIT #2:


Como outros notaram, sua melhor jogada é apenas deixar as lacunas. A menos que haja algum limite na mesa quanto ao comprimento e os Ids DEVEM ser 1-30 (estranho), deixe-o em paz. Não há nenhum benefício para preencher as lacunas.

EDIT #3:


Mais uma coisa a considerar:se você realmente tiver que manter 1-30 por algum motivo, não exclua suas linhas. Adicione uma coluna para sinalizar cada linha como ativa ou não e, em seguida, apenas atualize as linhas que estão inativas quando necessário e, em seguida, sinalize-as como ativas. Isso é MUITO hacky, mas sua exigência é meio hacky, então ...