Neste artigo você vai aprender a como desabilitar uma FOREIGN KEY em MySQL, de modo temporário ou para sempre!
Fala programador(a), beleza? Bora aprender mais sobre configurações, FOREIGN KEY e também SQL!
Podemos desabilitar temporariamente ou para um tempo indeterminado as chaves estrangeiras
Há um comando que se chama SET, que serve para alterar algumas configurações
Vamos utilizar o SET em conjunto de FOREIGN_KEY_CHECKS, uma propriedade de chaves estrangeiras
Alterando este valor para 0, desabilitados as FKs
Veja um código como exemplo:
SET FOREIGN_KEY_CHECKS=0;
Agora as chaves estrangeiras estão desabilitadas
Para voltar elas ao normal, utilize o seguinte comando:
SET FOREIGN_KEY_CHECKS=1;
Alterando para 1 teremos novamente as checagens de FKs, ou seja, o sistema volta como a forma padrão
Podemos então alternar o valor de 0 para 1 quando precisarmos!
Conclusão
Neste artigo você aprendeu a como desabilitar uma FOREIGN KEY em MySQL, de modo permanente ou temporário
Utilizamos o operador SET em conjunto de FOREIGN_KEY_CHECKS
Alterando o valor entre 0 e 1, sendo 0 desabilitado e 1 para habilitar novamente
Confira nossos cursos gratuitos no Youtube, com vídeos todos os dias!
Se inscreva e ative o sininho para receber as notificações e aprender mais ainda sobre desenvolvimento web!
Veja também nosso catálogo de cursos na Udemy, todos com exercícios e projetos práticos, nas mais diversas tecnologias
O link acima contém um cupom de desconto para os cursos!
Qual o Risco de fazer isso em um banco em produção. Pergunto pois estou tentando criar uma fk para uma tabela e coluna já existente, mas dá erro de restrição: [Content] Erro SQL (1452): Cannot add or update a child row: a foreign key constraint fails (nome_banco.#sql-734_1d2, CONSTRAINT fk_adiantamentos_lancamento_caixa_estorno FOREIGN KEY (lancamento_caixa_estorno_id) REFERENCES lancamento_caixa (lancamento_caixa_id) O) Mas quando eu uso: SET foreign_key_checks = 0; ALTER TABLE adiantamentos ADD INDEX fk_adiantamentos_lancamento_caixa_estorno (lancamento_caixa_estorno_id); ALTER TABLE adiantamentos ADD CONSTRAINT fk_adiantamentos_lancamento_caixa_estorno FOREIGN KEY (lancamento_caixa_estorno_id) REFERENCES lancamento_caixa(lancamento_caixa_id) ON UPDATE CASCADE ON DELETE RESTRICT; SET foreign_key_checks = 1; Consigo criar a Fk. Meu receio é fazer… Leia mais »