Fórum Erro de Chave Estrangeira ao deletar registro #403503

21/06/2011

0

Tenho duas tabelas com chave estrangeira e estou querendo deletar o registro da primeira tabela e quando isso acontecer quero que os registros relacionados na segunda também sejam deletados.

estou usando clientdataset.

Como eu poderia implementar esse código?

Tentei do modo abaixo e deu erro de Foreign key:

      DM.clientdataset.Delete;
      DM.clientdataset.ApplyUpdates(0);
      DM.clientdataset.Refresh;
Francisco Macedo

Francisco Macedo

Responder

Posts

22/06/2011

Eliel Martins

  Olá Francisco !


  O que você deve fazer é excluir os registros que depende desse registro, ou seja excluir todos os registro que tem vinculos com estes registros e depois fazer a exclusão desse registro. Bom vou fazer um exemplo abaixo :

  DM.Query.close;
  DM.Query.Sql.Clear;
  DM.Query.Sql.Add('DELETE FROM PRODUTO WHERE CATEGORIA = :PRAM_CATEGORIA ');
  DM.Query.ParamByName('PRAM_CATEGORIA').AsInteger :=        DM.clientdataset.FieldByName('CATEGORIA').AsInteger;
  DM.Query.Exec;
 


  Depois de ter excluido o(s) registro(s) que tem vinculo com a CATEGORIA (4) que desejo excluir, agora vamos excluir a CATEGORIA que desejamos excluir.

  DM.clientdataset.Delete;
  DM.clientdataset.ApplyUpdates(0);  


  Espero ter ajudado.

  Eliel G. Martins
Responder

Gostei + 0

22/06/2011

Francisco Macedo

Obrigado Eliel.

Resolvi alterando no banco de dados o 'delete rule' da chave estrangeira para cascade.
Responder

Gostei + 0

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

Aceitar