Chave Primária auto incrementada com chave estrangeira dentro de uma transação

17/03/2017

0

Estou com seguinte problema: Preciso gravar a chave primária da tabela pedido como chave estrangeira na tabela itens dentro de uma transação, o problema é que a chave primária é autoincrement e por isso só é gerada no momento da gravação, impedindo assim que eu posso inserir os itens já que não tenho a chave estrangeira. então como gravar a chave estrangeira se ela a chave primária só é gerada no momento da gravação? se eu fizer fora de uma transação da certo, mas isso precisa de fato ser realizado dentro de uma transação para que os itens só sejam realmente gravados se o pedido também for gravado.
O Código abaixo exemplifica melhor o que eu estou tentando dizer. Desde já agradeço.

try
Transaction := DataModule.SQLConnection.BeginTransaction(TDBXIsolations.ReadCommitted);

// ID - PK e é auto incrementado pelo banco MySQL
DataModule.cdsPedido.Close;
DataModule.cdsPedido.Open;
DataModule.cdsPedido.Insert;
DataModule.cdsDataPedido.AsDateTime := Date;
DataModule.ValorPedido.AsCurrency := Tot;
DataModule.cdsPedido.Post;
DataModule.cdsPedido.ApplyUpDates(0);

// ID - PK e é auto incrementado pelo banco MySQL
DataModule.cdsItens.Close;
DataModule.cdsItens.Open;
DataModule.cdsItens.Insert;
DataModule.cdsItensIDPedido.AsInteger := DataModule.cdsPedidoID.AsInteger; // IDPedido é a chave estrangeira na tabela de Intens
DataModule.cdsItens.AsString := Itens;
DataModule.cdsItens.Post;
DataModule.cdsItens..ApplyUpDates(0);

DataModule.SQLConnection.CommitFreeAndNil(Transaction);
Application.MessageBox('Regisgtro Salvo com Sucesso!','Informação', MB_OK+MB_ICONINFORMATION);
except
On E : Exception do
begin
dm.SQLConn.RollbackFreeAndNil(Transaction);
showmessage(E.Message);
end;
Edivania

Edivania

Responder

Posts

17/03/2017

Edivania

pessoal, desculpem por não identar o código, na realidade estava identado mas acabei apagando a Tag Código que fica responsável por manter a Identação
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar