Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida sobre primary key


Saneax

Pergunta

Opa,

É o seguinte por exemplo essa tabela:`Veh` tenho os seguintes campos (todos int): ID MODEL, inseri 3 linhas: 1|555,2|333,3|666.

Se por exemplo deleto a 2 linha há alguma forma de que o próximo valor inserido o id sejá 2, sem ter que especificar o id que ele ira ficar: INSERT INTO `Veh` values(NULL,543); <- aqui o id será 4, mas quero que ele fique com id 2 sem ter que especificar o id.

Espero que tenha sido claro na minha dúvida.

Obrigado.

Agora talvez isso esclareça mais as coisas:

new sql[256];
new row[512];
format(sql, sizeof(sql), "SELECT COUNT(*) FROM `"TABLENAME_VEH"`");
mysql_query(sql);
mysql_store_result();
mysql_fetch_row(row);
new TotalVeh = strval(row);
mysql_free_result();
for (new i = 0; i < TotalVeh; i++)
{
format(sql, sizeof(sql), "SELECT ID,MODEL FROM `"TABLENAME_VEH"` WHERE id=%d", i+1);
mysql_query(sql);
mysql_store_result();
if (mysql_num_rows() > 0)
{
mysql_fetch_row(row);
sscanf(row, "p<|>dd", Veh[i][ID], Veh[i][Model]);
}
}
printf("VEHICLES: Total de %d vehiculos carregados ", TotalVeh);
mysql_free_result();

Editado por Saneax
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
É o seguinte por exemplo essa tabela:`Veh` tenho os seguintes campos (todos int): ID MODEL, inseri 3 linhas: 1|555,2|333,3|666.

Se por exemplo deleto a 2 linha há alguma forma de que o próximo valor inserido o id sejá 2, sem ter que especificar o id que ele ira ficar: INSERT INTO `Veh` values(NULL,543); <- aqui o id será 4, mas quero que ele fique com id 2 sem ter que especificar o id.

Espero que tenha sido claro na minha dúvida.

Claro como água.

Resposta:

Não. Não há como ser automático e simples. O Mysql sempre irá utilizar o último valor do autoincrement +1.

Link para o comentário
Compartilhar em outros sites

  • 0

Como o Denis Courcy colocou, o AUTOINCREMENT sempre vai somar 1 ao último registro inserido.

Para tentar contornar a sua necessidade você vai ter que tirar o AUTOINCREMENT do campo e criar uma função no banco para gerar os Id´s, função essa que iria lendo código a código a sua tabela até encontrar uma lacuna e aí jogar para o php.

Mas, do meu ponto de vista, isso não fica bom, imagina que em determinado momento você vai ter um ID 1250 e alguém exclui o 0002, por ex. o próximo registro ao invés de ser 1251 seria 0002, então numa listagem que você poderia utilizar esse campo para ordenar, indexar,etc você terá que utilizar outro como datas ou strings que acarreta mais uso de hardware para retornar a consulta.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...