Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lucas

próximo indice

Recommended Posts

digamos que tenho uma tabela clientes com os campos id e nome.

 

utilizando SQL, como descubro o id do próximo cliente cadastrado.

 

tipo ... eu to fazendo assim:

 

$sql = "select id from clientes order by id desc";$qry = mysql_query($sql);$id = mysql_result($qry, 0);$id++;

imaginando o caso do último cadastrado tenha o id de nº 80. se eu apagar todos os registros e usar o código acima, a var $id valerá 1 ... e não 81.

 

sacaram?????

 

 

desde já ... agradeço muito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!!Deixe me ver se entendi, você deseja recuperar o valor do próximo ID a ser cadastrado ? Bom, você pode usar um quebra galho:SELECT MAX(ID_NOME) FROM CLIENTESIsto retorna o maior valor do ID_NOME na tabela CLIENTESAté

Compartilhar este post


Link para o post
Compartilhar em outros sites

era isso que eu tava fazendo ... mas não é isso que eu quero.

 

deixa explicar dando um exemplo.

 

Vamos imaginar uma tabela com 10 registros gravados nela. Consederando que o 1º registro tenha o id como 1 então o último id será 10.

 

Mas, digamos que eu apague o registro de nº 10. Então ficarei com uma tabela de 9 registros sendo eles com os ids de 1 à 9.

 

Mas, da próxima vez em que eu dar um INSERT o registro será de nº 11 (pelo menos é isso que acontece aki).

 

E é isso que eu quero saber. Se eu fizer o que me foi dito, o SELECT vai me retornar 10 e não 11.

 

Obrigado pela atenção. :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim!! Agora entendi o que você quer fazer!! O que acontece é que o campo id é de auto incremento, deste jeito, a cada inserção ele aumenta o id de um. você pode deixar esse campo sem ser auto incremento e como um inteiro comum mas você pode ter problemas de integridade referencial se esse id for chave da tabela. Qual banco de dados você está utilizando ??? Pq está querendo decrementar o id ???às vezes fazer isso não compensa principalmente se for por vaidade apenasAté

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Lucas,Oq você pode fazer é o seguinte:select top 1 id from clientes ( nolock ) order by id descCom isso ele pegara o proximo id cadastro!!! caso nao de certo tente trocar para ASC[]sThiago

Compartilhar este post


Link para o post
Compartilhar em outros sites

mad4designer: infelizmente, não funcionou.Estou usando mysql ... Não quero fazer isso por vaidade ... é o seguite: eu quero gravar dados num banco. Entre esses dados, existe uma foto (a do cliente). Eu to fazendo upload p/ meu server ... mas os nomes dos arquivos poderão ser buplicados (tipo: duas pessoas podem mardar o arquivo "minha_foto.jpg") e por isso, eu renomiei as fotos p/ o id do cliente. mas quando eu deletei o último registro ... deu problema (explicado no meu post anterior).valeu povo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu costumo usar uma técnica bem eficiente:Por exemplo a tabela tbFuncionarios ( cdFuncionario, nome, dtNasc).Tenho que auto-incrementar o campo cdFuncionario certo?entao eu crio a tabela tbUltimoCodigo (nmTabela, ultCodigo)sendo assim quando eu for iniciar a minha aplicação tenho que ter todas as tabelas que utilizarão o incremento na tabela tbUltimoCodigo.Ex.: tbFuncionarios, 0Quando for inserir um novo registro na tabela tbFuncionarios:primeiro pego o novo código:select ultCodigo + 1 as newCod from tbUltimoCodigo where nmTabela = 'tbFuncionarios'Depois atualizo ele:update tbUltimoCodigo set ultCodigo = ultCodigo + 1 where nmTabela = 'tbFuncionarios'Pronto agora é só inserir este código junto com o novo registro.Este sistema serve para trabalhar em rede e funciona muito bem sem problemas nenhum. Se for cancelado o registro depois de gerado o novo código, o mesmo será perdido ficando um número vago. você pode fazer criar outra tabela tbCodigoLiberado(nmTabela, cdLiberado) e nela inserir todos os códigos que foram cancelados e assim sempre antes de gerar um novo, procurar os liberados nesta tab...Qualquer dúvida estamos aí...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.