Delete Cascade? O que é isso? | CreateSe
Вставка
- Опубліковано 5 лют 2025
- O que é DELETE CASCADE? Como e quando usamos?
Assista o vídeo e descubra quando é interessante utilizarmos esta opção nas nossas chaves estrangeiras!
😍 Gostou do vídeo? Deixa o like e compartilha com os amigos!
😉 Siga @create.se também no Instagram para conteúdo diário sobre SQL e Banco de Dados.
🎥 Não esqueça de se increver e ativar as notificações.
Acompanhe nosso trabalho também em:
==================================
Instagram: @create.se
Facebook: @createse.oficial
==================================
Link do vídeo: • Delete Cascade? O que ...
Se você gostou do conteúdo e quer aprender mais, saiba que eu tenho um curso completo de SQL:
AcademiaDB: Vá além das simples consultas.
Destrave todas as possibilidades dentro do banco de dados.
Acesse: createse.com.br
Obrigado. Estava procurando exatamente como fazer isso.
De nada!
Obrigado ai DBA, o que fez rir, é o teu rostinho dizendo "Deve usada co; sabedoria" kkkkkkkkkk... Merci
AHAHHAHAHA 😁
Ótimo vídeo! Parabéns!
Valeuuuu
Muito bem explicado ! Mesmo para quem já sabe (ou acha que sabe...), uma explicação completa como essa ajuda a esclarecer e solidificar conceitos !
Obrigada! Que bom que você achou útil! Sempre é bom a gente revisar os conceitos.
Parabéns pelo tutorial, me ajudou muito. E parabéns pelo Canal.
Obrigada!
Seu vídeo me ajudou muito! Obrigado, muito bem explicado!
Obrigada!!!
Ótima explicação!
Obrigada!!!
Muito obrigado me ajudou de mais!
De nada, mas que ótimo que ajudou!
Me salvou aqui no estágio hehe vlwss😄
Uhuuuu que bom!!!!
Obrigado
De nadaaa
Que pena que o ultimo video que ela postou faz 1 ano, canal é muito bom, seria otimo se continua-se postando videos
Oiiiiiiiii Logo estarei de volta com muito mais conteúdo! Não vai embora! 🙂
Mas usando essa chave composta q vc citou, isso impede que seja inserido mais de uma vez um produto repetido pra mesma pessoa né?
Muito bem explicado. Entretanto fiquei com uma dúvida sobre o que eu deve fazer quando eu precisar alterar um registro somente para registros futuros, ou seja: sem altear os dados já registrados. Exemplo: tabela funcionário possui o atributo(coluna) função = professor e na tabela Atividades contém a chave estrangeira(fk) função proveniente da tabela funcionário e também uma coluna com a data que tal função foi exercida. Porém, se um funcionário tiver sua função alterada de 'professor' para 'diretor', essa atualização não pode alterar os registro na tabela Atividades, pois se isso acontecer , seria alterando o histórico desse funcionário, que em determinada data exerceu atividades como professor para diretor. Então como eu faço para alterar a função de alguém na tabela funcionário sem alterar os registros na tabela atividades, uma vez que isso não é possível com CASCATE ?
Deixa ver se entendi ou se poderia ser dessa maneira. Vou exemplificar com as tabelas: funcionarios (codigo, nome, funcao) / atividades (cod_funcionario, funcao, data_inicio, data_fim). Nesta tabela de atividades temos o funcionario, a data e a funcao desempenhada neste periodo. Você quer que sempre que altere a função do funcionario, adicione o historico na atividades, incluindo um novo registro com o cod do func, o período anterior e a função anterior (a funcao atual eh a que esta na tab funcionarios). Para isso, voc pode criar uma TRIGGER de UPDATE na tabela de funcionarios, que sempre q ouver alteração na função inclua um registro para a função anterior na tabela de atividades. Nao sei se entendi ou não seu problema, mas acho que eu faria assim para manter o histórico.
@@CreateSe Obrigado pela resposta. Vou estudar sobre "TRIGGER de UPDATE ".
@@NayT0N Tenho video sobre Triggers aqui no canal, se quiser olhar.
Posso remover somente o registro da tabela pessoas sem remover o registro da pessoas_produtos? Somente removendk a constraint? (Digamos que para deixar a tabela pessoas produtos como histórico?)
Eu estou com um problema de quando eu deleto alguem da tabela produto a tabela imagem não apaga o endereço da imagem teferente.
E está ON DELETE CASCADE.
Mas ocorre algum erro? Que mensagem dá? Você tentou dropar a contraint da FK e recriar ela novamente, especificando o DELETE CASCADE?
QUANDO UM CAMPO DATA FOR VAZIO COMO FAZER PRA EXCLUIR VARIOS REGISTROS CADASTRADOS DE UMA TABELA
Para filtrar os registros onde o campo data for vazio (estiver sem conteúdo neste campo), você pode fazer WHERE campo_data IS NULL;
Faça isso em um SELECT ( SELECT * FROM tabela WHERE campo_data IS NULL;) para ver se está correto os registros selecionados, após pode usar o comando DELETE FROM tabela WHERE campo_data IS NULL;
boa tarde, depois de utilizar o on delete cascade, como faço pra voltar a chave estrangeira?
Como assim voltar a chave estrangeira? Não entendi
Eu tô com uma encrenca bem grande pra resolver, porém não posso remover as Fks em produção e recriar com delete on cascade, vou ter que fazer manualmente
Eitaa, boa sorte na empreitada! 🍀
Caso eu quisesse tambem apagar os produtos?
Deixa eu ver se entendi: você quer que, ao apagar uma pessoa, apague a relação pessoas_produtos e também os registros referentes aos produtos que ela comprou? Se for isso, só tenha em mente que outras pessoas também podem ter comprado aquele mesmo produto.
@@CreateSe Exatamente isso. Pode nao ser logico no exemplo que voce deu. Porem em uma situacao onde temos um cliente e alguns carros em uma oficina. Se o cliente nao quer mais ser afiliado da oficina os carros tambem devem ser retirados. Entende? Se puder explicar isso ficaria muito grato.
@@wandersongomes8405 Vamos ver se entendi. Ex.: clientes(codigo, nome) carros(codigo, cod_cliente, marca). Se fosse essa situação você criaria a FK no campo cod_cliente da tabela carros com a opção do delete cascade. Não sei se seria essa a tua situação.
@@wandersongomes8405Acabei vendo esse comentário e me intrometendo um pouco na conversa, para efeito de manter o histórico dos teus clientes do período que ele estava ativo acredito que o mais correto seria ter um controle para marcar se o cadastro do cliente ainda é ativo na sua oficina, outro controle para marcar se o Carro que o cliente tem ainda está ativo com o cliente visto que um cliente pode ter varios carros e em algum momento pode não ter mais algum desses carros, como boa pratica excluir um registro que teve movimentação de algum tipo fará você perder o teu histórico de banco de dados que envolve as movimentações feitas para esse cliente, por isso utilize algo simples Campo ATIVO "S" ou "N" ao criar os controles das tabelas.
E se eu precisar truncar a tabela pessoas? o mysql não me deixa truncar a tabela, mesmo usando o on delete cascade;
O truncate e o delete são diferentes. No Mysql não tem a opção de cascade no truncate. Uma opção seria você remover as FKs para tabela de pessoas e truncar a tabela, ou então desativar a verificação de FKs (SET FOREIGN_KEY_CHECKS = 0; ) , truncar a tabela e ativar novamente. Espero ter dado uma luz.🙂
Bom dia professora!! Excelente aula!! Eu tenho um banco de dados que já tinham sido criadas as chaves estrangeiras, ao tentar mudar um campo da tabela "om" recebo esta mensagem: #1452 - Cannot add or update a child row: a foreign key constraint fails (`sismnt`.`mnt_solicitada`, CONSTRAINT `mnt_solicitada_ibfk_4` FOREIGN KEY (`om_cad`) REFERENCES `om` (`codom`) ON DELETE CASCADE ON UPDATE CASCADE). A Sra poderia me ajudar?
Opa! Conseguiu resolver já? Mas você está tentando atualizar o campo codom da tabela om ? Isso?
@@CreateSe consegui!! Suas aulas são excelentes!!
Meu caro esse Delete quando não é usado com sabedoria, lhe traz tantos transtornos kkkkk.
Commmmmm certeza, dor de cabeça na certa!
Apps #hamsterball
Boa noite !!
ALTER TABLE `tb_itensvendas`
ADD CONSTRAINT `tb_itensvendas_ibfk_1` FOREIGN KEY (`venda_id`) REFERENCES `tb_vendas` (`id`),
ADD CONSTRAINT `tb_itensvendas_ibfk_2` FOREIGN KEY (`produto_id`) REFERENCES `tb_produtos` (`id`);
Como seria para deletar itens desses exemplos?