pegar o codigo do ultimo registro inserido (em rede)

19/11/2005

Boa tarde pessoal,

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

Respostas

21/11/2005

Daniel_mc

SOBE


Responder Citar

22/11/2005

Wiltonfenix

No MySQL vc pode fazer:

SELECT LAST_INSERT_ID();

No PHP tem a função:

mysql_insert_id()


Ambas retornam o último código auto-incremento que vc gerou.


Responder Citar

22/11/2005

Daniel_mc

Obrigado companheiro, mas me diga uma coisa, este consulta
No MySQL vc pode fazer: SELECT LAST_INSERT_ID()
;

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
SELECT LAST_INSERT_ID()
ele vai puxar a [b:b6dc669c94]ID[/b:b6dc669c94] do valor inserido por mim ou por você?


Responder Citar

22/11/2005

Wiltonfenix

Eu: Dei um Insert; Você: Também deu um insert quase que junto; Quando ele for processar o Citação: SELECT LAST_INSERT_ID() ele vai puxar a ID do valor inserido por mim ou por você?


[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.


Responder Citar

23/11/2005

Daniel_mc

Muito obrigado companheiro!!


Responder Citar