Array
(
)

pegar o codigo do ultimo registro inserido (em rede)

Daniel_mc
   - 19 nov 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 generator, 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
   - 21 nov 2005

SOBE


Wiltonfenix
   - 22 nov 2005

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.


Daniel_mc
   - 22 nov 2005

Obrigado companheiro, mas me diga uma coisa, este consulta
Citação:

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:

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ê?


Wiltonfenix
   - 22 nov 2005


Citação:
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ê?


Eu vou receber o último ID do valor inserido por mim e Você vai receber o último ID do valor inserido por você. O MySQL não vai misturar os IDs, porque ele separa por sessão.

Exemplo:

Eu inseri um registro em qualquer tabela e me retorna o ID 14;

Você inseri um logo em seguida na mesma tabela e te retorna o ID 15;

Depois que Você inseriu, se Eu executar o SELECT LAST_INSERT_ID() vai me retornar 14 do mesmo jeito e se Eu inserir mais um e mais ninguém tiver inserido nada nesse intervalo, aí vai me retornar 16.

Entendeu? Então ele NUNCA vai misturar.


Daniel_mc
   - 23 nov 2005

Muito obrigado companheiro!!