Inquiridor
Como proceder nesse caso?

Pergunta
-
Preciso fazer um cadastro de cliente, quando mando gravar o registro também insiro na tabela telefone que tem o código do cliente como FK. Pra fazer a inserção uso transação já que vo trabalhar com mais de uma tabela, o problema é que quando mando inserir o cliente dentro da transação a operação ainda não foi efetivada por isso quando mando inserir o telefone da erro pq o código do cliente ainda não existe na tabela.
O que vocês me aconselham nesse caso?
Todas as Respostas
-
Ricardo nao existe a possibilidade nesta transação você usar o comando para recuperar os ultimo id gravado no banco e passar para ser gravado na tabela telefone, +/- isso:
DECLARE @IDCLIENTE INT--Recuperando ultima campo que acbou de inserido aonde seja identitySELECT @IDCLIENTE = SCOPE_IDENTITY ()--Inserindo na tabela TelefoneINSERT INTOtb_Telefone(IDCLIENTE,TELEFONE)VALUE(@IDCLIENTE ,@TELEFONE)
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/ -
Outra possiblidade é recuperar a ID através da cláusula OUTPUT
http://msdn.microsoft.com/pt-br/library/ms177564.aspx
Ao utilizar o OUTPUT junto com o método ExecuteScalar do SQLCOMMAND, você conseguirá capturar o ID gerado para aquela linha:
http://www.mikesdotnetting.com/Article/54/Getting-the-identity-of-the-most-recently-added-record
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Twitter @Olavooneto
Se for útil marque como resposta e faça um Developer feliz :) -
-
as operações estão dentro da mesma transação ?
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Twitter @Olavooneto
Se for útil marque como resposta e faça um Developer feliz :)