Retorno de campo auto_increment no MySQL

4 respostas
L

Bom dia Pessoal.

Esta é minha primeira mensagem no forúm e antes de expor minha dúvida, gostaria de dar os parabéns a todos que contribuem com este forúm.

Minha dúvida é a seguinte:
Como retorna o valor de um campo auto_incremet no MySQL logo após a inclusão de um registro?

Exemplo: Para incluir os intens de um pedido (Tabela: itens_pedido. Primary Key: codigo_pedido + codigo_item), preciso inicialmente cadastrar um pedido (Tabela: pedido. Primary Key: codigo - auto_increment).

Obs.: Estou utilizando JSP e Beans.

Agradeço a atenção.

4 Respostas

J

Fala rapaz…

Primeiramente seja muito bem vindo ao PJ, esperamos poder contar contigo para ajudar outros, e tbm no que precisar estamos ai!

tem uma funçao do proprio MySql que faz isso que eh a
mysql_insert_id(); //retorna o id gerado pelo auto_increment
mas por exemplo se depois tu foi mudar teu banco, vc terá que refazer algumas partes do código… o que vc pode fazer, eh após dar um insert recuperar esse ID com um select pegando o ultimo inserido… mas isso se o teu sistema nao tiver uma concorrencia muito grande senao pode ser que ao fazer o select outro registro possa ter sido inserido ja…

Então é isso ai!

cya!

L

Jujo, valeu pela sugestão, mas o problema é exatamente a concorrencia. Já pensei em utilizar a função max() do MySQL por exemplo, mas o problema, repito, está na concorrencia.
Eu gostaria de pegar o ID que acabei de criar. Algo como utilizar um ponteiro. Mas não sei se é possível e nem como fazer.

J

é entao usa aquela funçao mesmo… ela retorna o id a ser inserido… ou o que foiinserido… agora nao sei… mas eu acho que eh o id do proximo a ser inserido…
bom outra forma, eh vc fazer uma trigger, acho que as versões novas do MySql tem trigge neh… bom ela constaria de a cada inserção retorna o id inserido… dai daria certinho…

sugestão =)

cya!

J

Olá, depois de executar o Statement, use o metodo getGeneratedKeys para recuperar a chave gerada. Assim vc não vai ter problema de concorrencia. :wink:

valeuz…

Criado 21 de junho de 2004
Ultima resposta 21 de jun. de 2004
Respostas 4
Participantes 3