Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal tenho no meu banco de dados varias tabelas relacionadas, mas vou detalhar a situação que ocorrem em três tabelas em especifico.
Vou exemplificar o que acontece para que entendam o que está acontecendo.
Tabela "cadastro" tenho os dados de usuários
Tabela "conexões" tenho as conexões existentes entre os usuários (se são amigos na comunidade)
Tabela "estatisticas" tenho as estatísticas gerais, e entre elas a quantidade de conexões dos usuários
Na tabela "conexões" eu tenho uma chave estrangeira da tabela "cadastro"
E na tabela conexões eu tenho um trigger que quando se dele ou adiciona dados (amigos) é executado uma query para incluir ou diminuir a quantidade de amigos na tabela "estatisticas".
O problema quando eu deleto um usuário (o usuário exclui seu perfil na comunidade) o mesmo é deletado na tabela cadastro e consequentemente deletado na tabela conexões ja que a chave estrangeira está programada para funcionar em cascata.
Só que o trigger não é executado causando assim incoerência na quantidade de conexões do usuário.
Vocês tem alguma ideia de como posso contornar este problema ?
Você diz fazer um trigger na tabela "cadastro" e não usar a propagação na chave estrangeira...
pois na tabela conexões ja existe o trigger on delete.
Então não entendi o problema.
A tabela "conexões" mantem uma chave estrangeira e um trigger on delete.
Esta chave estrangeira está ligada ao id da tabela cadastro.
Quando eu deleto um registro na tabela cadastro automaticamente os registrs ligados a este id na tabela conexões tb é deletado.
So que o trigger (na tabela conexões) não é executado.
Queria saber o motivo e como contornar isso.
Detalhe, se eu deleto o registro direto na tabela conexões o trigger executa corretamente.
http://stackoverflow.com/questions/18859020/trigger-after-delete-not-working
http://stackoverflow.com/questions/15257110/mysql-trigger-is-not-called-by-constraints
Parece que não dispara triggers no caso de constraints (cascade) , talvez aja algum contorno.
Faça outra trigger (on delete usuario) que delete as conexões