Como deletar dados corretamente na tabela mestre/detalhe?

Delphi

05/01/2007

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

Curtidas 0

Respostas

Tnaires

Tnaires

05/01/2007

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


GOSTEI 0
Adriano_servitec

Adriano_servitec

05/01/2007

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.


GOSTEI 0
Tnaires

Tnaires

05/01/2007

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


GOSTEI 0
POSTAR