Erro de Chave Estrangeira ao deletar registro
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;
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
Curtidas 0
Respostas
Eliel Martins
21/06/2011
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 :
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.
Espero ter ajudado.
Eliel G. Martins
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
GOSTEI 0
Francisco Macedo
21/06/2011
Obrigado Eliel.
Resolvi alterando no banco de dados o 'delete rule' da chave estrangeira para cascade.
Resolvi alterando no banco de dados o 'delete rule' da chave estrangeira para cascade.
GOSTEI 0