Valor do campo autoincremento

Delphi

02/08/2003

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?


Daaneto

Daaneto

Curtidas 0

Respostas

Koplin

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

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.


GOSTEI 0
Koplin

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]


GOSTEI 0
Daaneto

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.


GOSTEI 0
POSTAR