Valor do campo autoincremento
Gostaria de saber como pegar o valor de um campo autoincremento, assim que ele é inserido no banco.
Por exemplo, ao utilizar uma instrução SQL de inserção (INSERT INTO......)
como pegar o valor da chave autoincremento do registro que acabou de ser inserida no banco?
Por exemplo, ao utilizar uma instrução SQL de inserção (INSERT INTO......)
como pegar o valor da chave autoincremento do registro que acabou de ser inserida no banco?
Daaneto
Curtidas 0
Respostas
Koplin
02/08/2003
Normalmente, o valor é postado no campo tão logo se dá o Postou applyUpdates, ou seja o campo fica null durante o insert. Dependendo do q voce precisa fazer, pode fazer select max(nome_do_campo) antes de dar o insert. O valor do auto incremento será este valor+1, mas ainda assim não é um bom modo pois alguem pode postar antes e ficar com o valor do seu registro. Uma outra forma seria dar o insert seguido do post (ou applyupdates dependendo do seu BD), seguindo um edit. Ai esse valor ficara disponível para voce. Eu uso deixar o auto incremento indisponivel para o usuário e uso outro campo para código. Manipulo uma tabela de indices, comum a todos os clientes e pego e incremento la o valor, e disponibilizo para o usuário. Como sua questão ficou muito vaga, pois Este comportamento varia com o banco de dados usado e eu não sei com que finalidade vc vai usar o valor do autoincremento, sugiro q voce informe o BD usado. Talvez algum colega tenha uma sugestão melhor.
GOSTEI 0
Daaneto
02/08/2003
Talvez realmente eu tenha complicado demais.
A questão é a seguinte:
No sistema que estou desenvolvendo, existe uma tabela de Log, que registra a data e hora em que usuario fez o login e a data e a hora de logout.
Portanto ao inserir o registro na tabela, é salvo o codigo do usuario, e a data e hora do login.
Gostaria de pegar o valor do campo autoincremento deste registro que acabou de ser inserido para na hora de salvar a data e hora que o usuario fizer o logout, buscar o registro com o codigo do autoincremento e fazer a atualização.
Pensei em contornar isso, fazendo a busca utilizando o campo de data/hora, ao invés do campo de autoincremento, mas achei que não seria legal fazer assim.
A questão é a seguinte:
No sistema que estou desenvolvendo, existe uma tabela de Log, que registra a data e hora em que usuario fez o login e a data e a hora de logout.
Portanto ao inserir o registro na tabela, é salvo o codigo do usuario, e a data e hora do login.
Gostaria de pegar o valor do campo autoincremento deste registro que acabou de ser inserido para na hora de salvar a data e hora que o usuario fizer o logout, buscar o registro com o codigo do autoincremento e fazer a atualização.
Pensei em contornar isso, fazendo a busca utilizando o campo de data/hora, ao invés do campo de autoincremento, mas achei que não seria legal fazer assim.
GOSTEI 0
Koplin
02/08/2003
Por que voce nao pega o usuario e a coluna logout que deve estar null?
por ex
id usur lgin lout
01 02 01/01/2002 00:00
02 02 01/01/2002 00:00 01/01/2000 10:00
03 02 01/01/2002 00:00
04 02 01/01/2002 00:00 01/01/2000 10:00
Se é assim que é a sua tabela (+-)
a coluna lout vai estar em branco até que o usuario que logou saia do sistema.
para atualizar sem muito trabalho faça:
´update tabelalog set lout = now where usur = 03 and lout is null´
Claro que sua sql vai ser um pouco diferente em função do BD q vc esta usando. Agora uma outra situação. Se o usuario logar em mais de uma máquina ao mesmo tempo, uma coluna com a identificação do terminal seria preciso e vc incluiria esta coluna no seu sql. Assim a atualizaçao so ocorrerá para o usuario 03 na maquina 192.168.0.55 , por exemplo.
Será que ajuda?[/b]
por ex
id usur lgin lout
01 02 01/01/2002 00:00
02 02 01/01/2002 00:00 01/01/2000 10:00
03 02 01/01/2002 00:00
04 02 01/01/2002 00:00 01/01/2000 10:00
Se é assim que é a sua tabela (+-)
a coluna lout vai estar em branco até que o usuario que logou saia do sistema.
para atualizar sem muito trabalho faça:
´update tabelalog set lout = now where usur = 03 and lout is null´
Claro que sua sql vai ser um pouco diferente em função do BD q vc esta usando. Agora uma outra situação. Se o usuario logar em mais de uma máquina ao mesmo tempo, uma coluna com a identificação do terminal seria preciso e vc incluiria esta coluna no seu sql. Assim a atualizaçao so ocorrerá para o usuario 03 na maquina 192.168.0.55 , por exemplo.
Será que ajuda?[/b]
GOSTEI 0
Daaneto
02/08/2003
É bem interessante a observação que você fez.
Acho que assim, realmente poderei resolver meu problema.
Muito obrigado pela atenção.
Acho que assim, realmente poderei resolver meu problema.
Muito obrigado pela atenção.
GOSTEI 0