INSERT em tabelas com Indice AutoIncrementavel

Delphi

19/04/2005

Boa Tarde...

Vamos ao Codigo
Tabela Cliente
Codigo AutoIncremental
Nome varchar
CPF varchar

Query1.Close;
Query1.SQL.Add(´INSERT INTO DB_Cliente VALUES (:Nome, :CPF)´);
Query1.Params[0].AsString := Nome;
Query1.Params[1].AsString := CPF;
Query1.ExecSQL;

Minha pergunta eh a seguinte... como posso saber qual o Codigo deste ultimo INSERT, ja que o Campo ´Codigo´ eh autoincremental.

Atenciosamente,


Ticudinho

Ticudinho

Curtidas 0

Respostas

Raserafim

Raserafim

19/04/2005

não sei se é a forma de resposta que vc quer mas...
pode saber Codigo do ultimo registro utilizando a função MAX
select MAX(Codigo)
from Cliente



GOSTEI 0
Ticudinho

Ticudinho

19/04/2005

Atualmente estou usando este metodo..,,.
Porem, qdo dois usuarios efetuarem compras distitntas e no mesmo momento cadastrarem clientes, nao saberei distinguir o codigo de um INSERT e de outro


GOSTEI 0
Anorex

Anorex

19/04/2005

então:

select max(id) from Cliente where cpf = :cpf



GOSTEI 0
Rjun

Rjun

19/04/2005

Evitem o uso de CPF para indentificar registros.


GOSTEI 0
Ticudinho

Ticudinho

19/04/2005

Bem... ja q nao tenho como trazer o ultimo registro de um INSERT especifico, como posso fazer a concorrencia de trafego na BaseDados ?

Vamos ao Exemplo:

Tabela COMPRA_PRODUTOS (Chave Externa - CodigoEstoque)
Tabela ESTOQUE_PRODUTOS
Tabela UTILIZACAO_PRODUTOS (Chava Extrena - CodigoEstoque)

atualmente, eu faço um controle de concorrencia via Menu Principal. Se tiver alguem comprando, nao posso utilizar nenhum produto e vice-versa.
Porem se o usuario COMPRADOR esquecer de finalizar a compra, fico com meu sistema ocioso.

Como utilizo o Codigo da Tabela ESTOQUE_PRODUTOS nos dois Casos (COMPRAPRODUTOS e UTILIZACAOPRODUTOS), como fazer com q minha BaseDados fique Consistente?, ja que posso ter no mesmo momento, um usuario comprando e outro fazendo utilizando.

Agradeco muito a Atencao


GOSTEI 0
Quadrado

Quadrado

19/04/2005

Eu não sei qual banco de dados está usando, eu uso Access e já fiz uma pesquisa muito grande sobre este tópico (verifique aqi no Forum) e não consegui solução. Atualmente faço assim:

Tabela1.Insert;
Tabela1Campo2.Value := ´Nome´;
Tabela1Campo3.Value := 123456;
Tabela1.Post;

nAutoInc := Tabela1Campo1.Value;


Desfa forma não há risco de duplicação do valor e voce terá o seu número corretamente, mesmo em ambiente multiusuário. Eu uso e funciona.

Boa sorte

Quadrado


GOSTEI 0
POSTAR