chamuska 5 Denunciar post Postado Janeiro 29, 2014 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
Motta 645 Denunciar post Postado Janeiro 29, 2014 Trunc na ordem Inscricoes Usuarios Compartilhar este post Link para o post Compartilhar em outros sites
chamuska 5 Denunciar post Postado Janeiro 30, 2014 <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
Motta 645 Denunciar post Postado Janeiro 30, 2014 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
chamuska 5 Denunciar post Postado Janeiro 30, 2014 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
Motta 645 Denunciar post Postado Janeiro 30, 2014 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
chamuska 5 Denunciar post Postado Janeiro 30, 2014 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
Motta 645 Denunciar post Postado Janeiro 30, 2014 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
chamuska 5 Denunciar post Postado Janeiro 30, 2014 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
Motta 645 Denunciar post Postado Janeiro 30, 2014 Não sei Compartilhar este post Link para o post Compartilhar em outros sites
chamuska 5 Denunciar post Postado Janeiro 31, 2014 Não sei Blz cara! Valeu por toda a ajuda! Compartilhar este post Link para o post Compartilhar em outros sites