Mysql campo autoincrement

7 respostas
C

como q eu faço para pegar a chaveprimaria que o meu registro foi inserido???

Explicando:
Tenho uma tabela com os campos Id(autoincrement) e Descrição, para inserir:

PreparedStatement ps = conn.prepareStatement(insert into tabela (Descricao) value(?));

ps.setInt(1,noveDecsricao);

ps.executeUpdate();

dai esses dados são salvos na tabela que gera o Id, eu queria saber se existe alguma maneira de eu pegar essa chave (o campo id) se fazer uma nova consulta no banco???

7 Respostas

Giulliano

procure no site do próprio MySQL pelo comando LAST_INSERT_ID(id)

http://dev.mysql.com/doc/

SE não me engano é select last_insert_id() from table

essa condição funciona contanto que sua tabela tenha um acamo do tipo INT e AUTO-INCREMENT

[/]'s

analyser

Voce pode dar um select max(id) tabela;

ai vc vai ter o ultimo e é só somar mais um.

Abraços

Giulliano

não é boa prática afinal a maior chave nem sempre é o último registro…

não nesse caso…

mas se vc estivesse usando o autoincrement do hibernate do tipo HI-LO que gera uma chave alta e uma baixa…o maior não seria o último… :wink:

C

Mas minha pergunta ao uso do

last_insert_id()

é essa:

O meu banco é uzado por vááááárias pesoas, cadastrando praticamente ao mesmo tempo, tipo se eu fizer um select usando last_insert_id(), naum corre o risco de outrem ja ter inserido algo na tabela???

ou se fizer isso logo abaixo a chance é pouca???

Marck

vai depender da sua sorte…rss
Ele vai pegar o último que estiver lá.

Giulliano

Você corre o risco sim…mesmo que a query seja executa logo após o insert…se realmente são várias pessoas apesar de a probabilidade ser pequena pode ser que ocorra…

aí vc teria q adicionar um critério na sua pesquisa…tipo select last_insert_id() from table where descricao = ???

não sei se isso funciona pois faz tempo q não uso mysql

T

Esse tipo de situação é tão comum que está prevista no JDBC.
getGeneratedKeys
Resta ver se isso está corretamente implementado no driver JDBC do MySQL.

Criado 12 de julho de 2007
Ultima resposta 12 de jul. de 2007
Respostas 7
Participantes 5