pegar o codigo do ultimo registro inserido (em rede)
19/11/2005
0
Estou com um probleminha em um sistema de avaliação que tenho que desenvolver aqui na faculdade. Ainda estou na dúvida se vou usar Delphi ou PHP, mas o banco será em MySQL. É o seguinte:
1- O aluno ira preencher a avaliação e ao clicar no botão salvar, o sistema ou a página deverá mostrar para ele o código daquele registro que acabou de ser salvo ( código este que é um PRIMARY KEY e AUTOINCREMENTO) para que ele possa anotar na ficha.
2- O problema é o seguinte, não posso pegar o último registro inserido pelo LAST ou pelo MAX porque várias pessoas irão estar cadastrando juntas, ai isto pode gerar erros, por exemplo, acabei de preencher e mandei salvar e o código do registro foi 00150, neste meio tempo em que será feita a consula pelo LAST ou MAX alguem pode ter inserido alguma coisa e o último registro já não será mais o meu.
3- Li aqui alguns post´s aqui no fórum sobre o [color=orange:b52204afc0]generator[/color:b52204afc0], mas nunca usei portanto não sei como fazer, será que algum dos meus nobres companheiros saberia como e poderia me ajudar :?:
Atenciosamente,
Daniel Miranda Cruz
Daniel_mc
Posts
22/11/2005
Wiltonfenix
SELECT LAST_INSERT_ID();
No PHP tem a função:
mysql_insert_id()
Ambas retornam o último código auto-incremento que vc gerou.
22/11/2005
Daniel_mc
no caso de várias pessoas inserindo simultaneamente ele vai retornar o valor inserido por mim, ou, supondo que eu e outra pessoa tenhamos inserido quase que no mesmo instante, ele vai retornar o valor inserido por último.
Tipo:
[b:b6dc669c94]Eu:[/b:b6dc669c94] Dei um Insert;
[b:b6dc669c94]Você:[/b:b6dc669c94] Também deu um insert quase que junto;
Quando ele for processar o
22/11/2005
Wiltonfenix
[b:2b7abac1ef]Eu[/b:2b7abac1ef] vou receber o último ID do valor inserido por mim e [b:2b7abac1ef]Você[/b:2b7abac1ef] vai receber o último ID do valor inserido por você. O MySQL não vai misturar os IDs, porque ele separa por sessão.
[b:2b7abac1ef][color=red:2b7abac1ef]Exemplo:[/color:2b7abac1ef][/b:2b7abac1ef]
[b:2b7abac1ef]Eu[/b:2b7abac1ef] inseri um registro em qualquer tabela e me retorna o ID 14;
[b:2b7abac1ef]Você[/b:2b7abac1ef] inseri um logo em seguida na mesma tabela e te retorna o ID 15;
Depois que [b:2b7abac1ef]Você[/b:2b7abac1ef] inseriu, se [b:2b7abac1ef]Eu[/b:2b7abac1ef] executar o [color=green:2b7abac1ef]SELECT LAST_INSERT_ID()[/color:2b7abac1ef] vai me retornar 14 do mesmo jeito e se [b:2b7abac1ef]Eu[/b:2b7abac1ef] inserir mais um e mais ninguém tiver inserido nada nesse intervalo, aí vai me retornar 16.
Entendeu? Então ele [b:2b7abac1ef]NUNCA[/b:2b7abac1ef] vai misturar.
Clique aqui para fazer login e interagir na Comunidade :)