Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel-Lopes

Deletar em cascata e executar trigger

Recommended Posts

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 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça outra trigger (on delete usuario) que delete as conexões

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.