pegar o codigo do ultimo registro inserido (em rede)

19/11/2005

3

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


Responder

Posts

21/11/2005

Daniel_mc

SOBE


Responder

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

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

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

23/11/2005

Daniel_mc

Muito obrigado companheiro!!


Responder