Trigger e For each

Pessoal,

Primeiro me desculpem por colocar minha dúvida nesse tópico, mas como não se trata de JAVA, acho que é esse seja o lugar onde mais se encaixa.

Bem, a dúvida!

Tenho as seguintes tabelas: A, B e C
Relações: A - 1 ----- * - B - 1 ------- * C
Um A tem muitos B e um B tem muitos C.

Estou querendo criar um trigger no MySQL (não sei se a criação do trigger seja a melhor saída, mas no momento me parece que sim), que quando eu delete um item de A, seja deletado todos os itens de B e todos os itens de C que possuem referencia para o item deletado de A (direta ou indiretamente).

Alguém pode me ajudar?

Abrç!

não precisa fazer trigger para isso no mysql

http://dev.mysql.com/doc/refman/4.1/pt/innodb-foreign-key-constraints.html

veja a opção ON DELETE CASCADE

só funciona em tabelas innoDB

bom, o jeito mais fácil que existe é você colocar um ondelete cascade nos relacionamentos, mas nem sei se tem isso no mysql (no postgres eu sei que tem hehehe)

mas se vc quer deletar todos os c’s que são ligados aos b’s que são ligados ao a… tente isso:

delete from c where fk_b in (select id from b where fk_a = idDoAParaDeletar);
delete from b where fk_a = idDoAParaDeletar;
delete from a where id = idDoAParaDeletar;

A ordem aqui é importante não esqueça.

Apesar disso te dar o que vc quer, ainda recomendo o cascade pra vc…

flw

[edit]argh, muito lento, hehehee[/edit]

Boa isso! :slight_smile:

Eu fiz aqui o Cascade e funcionou blz…

Valeu a todos!