Ir para conteúdo

POWERED BY:

Arquivado

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

chamuska

Problema com constraint das FKs

Recommended Posts

Pessoal, tenho a tabela lvc_usuarios e a tabela lvc_inscricoes, a tabela lvc_inscricoes tem a fk da tabela lvc_usuarios, por causa disso tive problema ao tentar dar truncate na tabela lvc_usuarios que da o seguinte erro:

 

 

ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint (`louvacao`.`lvc_inscricoes`, CONSTRAINT `fk_inscricoes_usuarios1` FOREIGN KEY (`usuario_id`) REFERENCES `louvacao`.`lvc_usuarios` (`id`))

 

Pesquisando um pouco achei essa solução:

 

 

 

SET FOREIGN_KEY_CHECKS=0; TRUNCATE table1; SET FOREIGN_KEY_CHECKS=1;

 

Resolveu, mas segundo o autor essa é uma pratica ruim e ainda assim mantem o problema no meu banco, me obrigando a executar o comando sempre que eu precisar do truncate.

 

Como posso resolver esse problema ?? Nunca tive isso em nenhum bd mysql que criei até hoje!

 

Estou montando o modelo do BD pelo Mysql Workbench e sincronizando o modelo com o BD, sera que tem que marcar alguma opção na hora de criar as tabelas ou fks ??

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

<blockquote class="ipsBlockquote" data-author="Motta" data-cid="2047610" data-time="1391034922"><p>Trunc na ordem Inscricoes Usuarios</p></blockquote>

 

Como, fazendo o truncate na tabela inscricoes e depois na usuarios ?

Se for isso não deu certo, na verdade o erro ocorre em todas as tabelas do BD.

 

Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão é que como as Constraints foram criadas não permite a deleção (truncate incluído) de uma tabela que seja PK de uma FK referenciada em outra tabela

 

Ou se faz os truncates na ordem filha >> mãe ou se desliga as constraints (#1).

 

Melhor ficar na solução que você já tem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão é que como as Constraints foram criadas não permite a deleção (truncate incluído) de uma tabela que seja PK de uma FK referenciada em outra tabela

 

Ou se faz os truncates na ordem filha >> mãe ou se desliga as constraints (#1).

 

Melhor ficar na solução que você já tem.

 

E se eu colocar em todas as FKs a opção para delete e update como CASCADE, sera que resolve ?

 

Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende da garantia que se quer da FK, a FK é para que a integridade seja mantida.

 

Não faz sentido :

 

post sem usuário

 

item sem nota fiscal

 

dependente sem funcionário

 

Em alguns casos ao se deletar o pai se quer :

 

Deletar os filhos >> cascade

 

"Limpar" os filhos >> set null

 

Nao deixar >> restrict

 

Quando se deleta ou "trunca" a tabela dependente antes e a "mãe" após isto não ocorre este problema da constraint

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende da garantia que se quer da FK, a FK é para que a integridade seja mantida.

 

Não faz sentido :

 

post sem usuário

 

item sem nota fiscal

 

dependente sem funcionário

 

Em alguns casos ao se deletar o pai se quer :

 

Deletar os filhos >> cascade

 

"Limpar" os filhos >> set null

 

Nao deixar >> restrict

 

Quando se deleta ou "trunca" a tabela dependente antes e a "mãe" após isto não ocorre este problema da constraint

 

É que estou trabalhando com BD local em um sistema em desenvolvimento, dai as vezes eu costumo dar truncate na tabela para 'reiniciar' ela e fazer novos testes!

Vou tentar colocar cascade, pois a ideia é que os filhos sejam excluídos.

 

Se o erro continuar mesmo aplicando o cascade, eu volto a pedir ajuda ai, pois nunca passei por isso, e faz tempo que trabalho com mysql!

 

 

Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que se faz cascade em truncate, não tenho certeza.

 

Em desenvolvimento faça a solução de desligar as constraints do post #1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que se faz cascade em truncate, não tenho certeza.

 

Em desenvolvimento faça a solução de desligar as constraints do post #1

 

É o que estou fazendo!

O problema é que sempre que eu ligar o computador novamente tenho que rodar o comando.

Existe uma forma de configurar pra sempre fica com SET FOREIGN_KEY_CHECKS=0; no BD ??

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.