Como deletar tabelas com FK

Delphi

26/02/2014

Olá pessoal,

Eu estava querendo deletar uma tabela PAI com uma tabela FILHO. Estou utilizando o IBExpert e queria colocar um codigo em banco de dados dentro do TSQLClienteDataset para utilizar no delphi

Eu estava tentando criar o código mais sem sucesso. Eu sei que eu consigo deletar só a tabela filho desta maneira
delete from detalle_kit A where a.id_kit = :ID


Porém eu quero deletar também a tabela pai junto de uma vez eu tentei desta forma mais ele da um erro:
delete (delete from detalle_kit A where a.id_kit = :ID) from kit b where b.id_kit = :ID


Eu acredito que foi da forma como eu fiz mesmo pois eu nunca fiz nada parecido. Alguem poderia me ajudar a deletar os dois de uma vez?

Desde já agradecido!
Edson Vilhalba

Edson Vilhalba

Curtidas 0

Respostas

Luiz

Luiz

26/02/2014

Boa tarde.

Uma saida é:

Na hora de criar FK você pode definir o delete on cascade, da uma pesquisada nisso: foreign key delete on cascade, ele automaticamente deleta os registros relacionados ao principal.

Outra sainda ainda, é criar uma trigger no banco de dados, quando acontecer um evento (delete) você dispara outro (deleta outra tabela).

Caso não queira tratar no banco e sim no fonte, outra saida é:

criar 2 sql no seu fonte em delphi:

delete from kit b where b.id_kit = :ID //primeiro deleta os registros da primeira tabela

delete from detalle_kit A where a.id_kit = :ID //depois deleta a segunda tabela ... ai vc pode deletar apenas os registro da 2 tabela, se a primeira deletou corretamente (ai vc trata com o try exception para saber se tudo correu bem)...

Abraços,

Luiz

GOSTEI 0
POSTAR