[RESOLVIDO]Quando gravo apos um delete, o novo registro não segue a posição

Fala Jedis;

Digamos que tenho 5 registros com auto incremento:
1 - azul
2 - vermelho
3 - amarelo
4 - verde
5- branco

Ai deleto o registro 3 (amarelo) e gravo um novo registro (preto). O novo registro fica sendo 6-preto, todavia ele é gravado na posição onde estava o 3-amarelo (que foi deletado). Como faço para que ao inves deste novo registro entrar na posição do registro que foi deletado, ser criado sempre na sequencia da posição, ficando assim:
1 - azul
2 - vermelho
4 - verde
5- branco
6 - preto

Isso não ocorre. Não no mysql.
Você está fazendo alguma coisa errada.

Cria uma sequence no banco.

MySQL não possui sequence…
Possui auto_increment, que, dentre outras coisas, define o valor de uma chave primária a cada inserção e não permite que um valor seja repetido, mesmo que seu “dono” tenha sido deletado.

no postgres isso não ocorre, ao deletar um valor e adicionar outro, a sequencia segue normal, um dado só ocupa a posição de outro quando é feito um update na posição selecionada, caso contrário, a sequencia segue normal…

E quem disse que o banco de dados é postgres?
Aliás, o autor nem disse qual o banco, mas, pelo “com auto incremento”, deduz-se que seja MySQL.

E quem disse que o banco de dados é postgres?
Aliás, o autor nem disse qual o banco, mas, pelo “com auto incremento”, deduz-se que seja MySQL.[/quote]

Se ele estiver usando serial no postgres, se torna “auto incremento” ;}

[quote=da_galaxia]Fala Jedis;

Digamos que tenho 5 registros com auto incremento:
1 - azul
2 - vermelho
3 - amarelo
4 - verde
5- branco

Ai deleto o registro 3 (amarelo) e gravo um novo registro (preto). O novo registro fica sendo 6-preto, todavia ele é gravado na posição onde estava o 3-amarelo (que foi deletado). Como faço para que ao inves deste novo registro entrar na posição do registro que foi deletado, ser criado sempre na sequencia da posição, ficando assim:
1 - azul
2 - vermelho
4 - verde
5- branco
6 - preto
[/quote]

com base no que você diz que fica na posição do antigo 3 amarelo? se for por uma simples query, seria só você ordenar pelo seu campo numérico, que acredito ser id.

Pois é, o cara nem falou que banco ta usando.

[quote=da_galaxia]Fala Jedis;

Digamos que tenho 5 registros com auto incremento:
1 - azul
2 - vermelho
3 - amarelo
4 - verde
5- branco

Ai deleto o registro 3 (amarelo) e gravo um novo registro (preto). O novo registro fica sendo 6-preto, todavia ele é gravado na posição onde estava o 3-amarelo (que foi deletado). Como faço para que ao inves deste novo registro entrar na posição do registro que foi deletado, ser criado sempre na sequencia da posição, ficando assim:
1 - azul
2 - vermelho
4 - verde
5- branco
6 - preto
[/quote]

O correto é você criar sua consulta usando uma cláusula “ORDER BY”, se quiser que seus resultados venham em uma determinada ordem.

O banco de dados pode pôr os dados inseridos em qualquer posição - não há nada no SQL que force o banco a inserir as coisas em uma determinada posição.

Se você não puser “ORDER BY” poderia ser até que, dependendo da implementação do seu banco de dados, ele lhe devolvesse os dados em sequência completamente diferente a cada vez que você inserisse ou removesse alguma coisa.

Pessoal, desculpem ai, o banco é MySQL, e uso auto incremento no cod.

vou tentar usar o que me endicaram ORDER BY. Pergunta! Eu usaria quando deleto ou quando gravo? E no caso, eu ordenaria pelo o quê? Seria algo como ORDER BY cod. Desde ja agradeço a colaboração de todos.

Eu resolve o meu problema, bastou eu “pensar fora da caixa”.

Como eu havia dito, se eu deletasse por ex. o registro 3, depois que gravasse outro, este se posicionava onde estava o registro 3, quando deleto o ultimo, a proxima inserção fica certa, pois irá ocupar exatamente o lugar do deletado, ou seja, a ultima posição. Como foi dito acima basta ordenar, todavia pelo o que eu havia programado não resolveria o meu problema, ai percebe que para o meu aplicativo eu deveria usar a clausura MAX no SELECT que implementei , agora não me importa aonde vai ficar os registros, pois meus valores estão seguindo como eu queria, depois eu ordeno o banco para visualização (listagem).
MUITO OBRIGADO pela atenção de todos.