Fórum Como deletar dados corretamente na tabela mestre/detalhe? #335726

05/01/2007

0

Boa tarde pessoal, bom gostaria de saber o seguinte:

Primeiro=Tenho uma tabela master com a chave primaria MATRICULA

Segundo=Tenho uma tabela detail com a chave estrangeira FK fazendo referencia no campo MATRICULA aonde no IBExpert fiz assim

[color=green:f559094108]Contraint Name FK_Corrente On Field Matricula FK Table Sind2 (Mestre) FK Fields Matricula (Mestre) Update Rule Cascade Delete Rule Cascade Index Name FK_Corrente_1 Index Sorting Ascending[/color:f559094108]

**************************
Bom nao sei se ficou correto a maneira de fazer a referencia do mestre/detail, e tambem a pergunta se estiver certo pq. na hora em que eu deleto uma matricula da tabela mestre a tabela detalhe exclui tudo sem perguntar que existe dados na tabela detalhe, no caso nao devia perguntar que tem dados cadastrados na tabela detalhe? Ou para dizer que existe dados na tabela detalhe nao deve ser deletado em cascata.


Adriano_servitec

Adriano_servitec

Responder

Posts

05/01/2007

Tnaires

Olá
Cara, se você não quiser permitir a exclusão automática, ajuste o Delete Rule para ´NO ACTION´, e trate a mensagem de erro no Delphi.
Abraços


Responder

Gostei + 0

06/01/2007

Adriano_servitec

Ok entendi, obrigado amigo, mais agora veio uma duvida, vamos supor que eu queira colocar no form um componente tipo radiogroup, checkbox, radiobutton, etc...com duas opçoes tipo deletar em cascata ou nao deletar em cascata, tem como eu criar uma opçao para ambos na unit, lembrando que fiz as tabelas no IBExpert.


Responder

Gostei + 0

07/01/2007

Tnaires

Nesse caso, é bom você manter o Delete Rule configurado pra No Action. Daí, você pode usar o Delphi pra fazer a exclusão, ou usar uma trigger, no evento BEFORE DELETE da tabela pai.
Você poderia ter uma tabela de parâmetros, que conteria um registro só e armazenaria a configuração da exclusão em cascata num campo ( Ex: PermitirExclusaoCascata ). Então, a trigger poderia verificar o valor desse parâmetro e, se o sistema estivesse configurado para exclusão em cascata, a trigger excluiria todos os registros da tabela filha.
Abraços


Responder

Gostei + 0

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

Aceitar