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

КОМЕНТАРІ • 50

  • @ahssertasafi
    @ahssertasafi 2 роки тому +2

    Obrigado. Estava procurando exatamente como fazer isso.

  • @aliudjalo7890
    @aliudjalo7890 2 роки тому +1

    Obrigado ai DBA, o que fez rir, é o teu rostinho dizendo "Deve usada co; sabedoria" kkkkkkkkkk... Merci

  • @OFabianoSilva
    @OFabianoSilva 2 роки тому +1

    Ótimo vídeo! Parabéns!

  • @C_G_1962
    @C_G_1962 4 роки тому +3

    Muito bem explicado ! Mesmo para quem já sabe (ou acha que sabe...), uma explicação completa como essa ajuda a esclarecer e solidificar conceitos !

    • @CreateSe
      @CreateSe  4 роки тому +1

      Obrigada! Que bom que você achou útil! Sempre é bom a gente revisar os conceitos.

  • @renatotg10
    @renatotg10 2 роки тому +1

    Parabéns pelo tutorial, me ajudou muito. E parabéns pelo Canal.

  • @gabrielmocellin1005
    @gabrielmocellin1005 2 роки тому +1

    Seu vídeo me ajudou muito! Obrigado, muito bem explicado!

  • @DevMurilo-kk8sk
    @DevMurilo-kk8sk 2 роки тому +1

    Ótima explicação!

  • @luumen647
    @luumen647 2 роки тому +1

    Muito obrigado me ajudou de mais!

    • @CreateSe
      @CreateSe  2 роки тому

      De nada, mas que ótimo que ajudou!

  • @yasuke4617
    @yasuke4617 Рік тому +1

    Me salvou aqui no estágio hehe vlwss😄

  • @hermessantos181
    @hermessantos181 Рік тому

    Obrigado

  • @gustavo194l
    @gustavo194l Рік тому +1

    Que pena que o ultimo video que ela postou faz 1 ano, canal é muito bom, seria otimo se continua-se postando videos

    • @CreateSe
      @CreateSe  Рік тому

      Oiiiiiiiii Logo estarei de volta com muito mais conteúdo! Não vai embora! 🙂

  • @jameswhatson6397
    @jameswhatson6397 Рік тому

    Mas usando essa chave composta q vc citou, isso impede que seja inserido mais de uma vez um produto repetido pra mesma pessoa né?

  • @NayT0N
    @NayT0N 3 роки тому +2

    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 ?

    • @CreateSe
      @CreateSe  3 роки тому

      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.

    • @NayT0N
      @NayT0N 3 роки тому +1

      @@CreateSe Obrigado pela resposta. Vou estudar sobre "TRIGGER de UPDATE ".

    • @CreateSe
      @CreateSe  3 роки тому +1

      @@NayT0N Tenho video sobre Triggers aqui no canal, se quiser olhar.

  • @powerguidissimo1
    @powerguidissimo1 2 роки тому

    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?)

  • @augustosilva33
    @augustosilva33 2 роки тому +1

    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.

    • @CreateSe
      @CreateSe  2 роки тому

      Mas ocorre algum erro? Que mensagem dá? Você tentou dropar a contraint da FK e recriar ela novamente, especificando o DELETE CASCADE?

  • @ROBERTOGLAUBERrobertogn
    @ROBERTOGLAUBERrobertogn Місяць тому +1

    QUANDO UM CAMPO DATA FOR VAZIO COMO FAZER PRA EXCLUIR VARIOS REGISTROS CADASTRADOS DE UMA TABELA

    • @CreateSe
      @CreateSe  Місяць тому

      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;

  • @edmarfernandes2416
    @edmarfernandes2416 2 роки тому +1

    boa tarde, depois de utilizar o on delete cascade, como faço pra voltar a chave estrangeira?

    • @CreateSe
      @CreateSe  2 роки тому

      Como assim voltar a chave estrangeira? Não entendi

  • @AlexRicardoHenz
    @AlexRicardoHenz 3 роки тому +1

    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

    • @CreateSe
      @CreateSe  2 роки тому

      Eitaa, boa sorte na empreitada! 🍀

  • @wandersongomes8405
    @wandersongomes8405 3 роки тому +1

    Caso eu quisesse tambem apagar os produtos?

    • @CreateSe
      @CreateSe  3 роки тому +1

      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.

    • @wandersongomes8405
      @wandersongomes8405 3 роки тому +1

      @@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.

    • @CreateSe
      @CreateSe  3 роки тому +1

      @@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.

    • @rafaelrebequi5873
      @rafaelrebequi5873 2 роки тому

      @@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.

  •  2 роки тому +1

    E se eu precisar truncar a tabela pessoas? o mysql não me deixa truncar a tabela, mesmo usando o on delete cascade;

    • @CreateSe
      @CreateSe  2 роки тому +1

      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.🙂

  • @everaldoandrade1186
    @everaldoandrade1186 2 роки тому

    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?

    • @CreateSe
      @CreateSe  2 роки тому +1

      Opa! Conseguiu resolver já? Mas você está tentando atualizar o campo codom da tabela om ? Isso?

    • @everaldoandrade1186
      @everaldoandrade1186 2 роки тому

      @@CreateSe consegui!! Suas aulas são excelentes!!

  • @Manuelsembola
    @Manuelsembola Рік тому +2

    Meu caro esse Delete quando não é usado com sabedoria, lhe traz tantos transtornos kkkkk.

    • @CreateSe
      @CreateSe  Рік тому +1

      Commmmmm certeza, dor de cabeça na certa!

  • @annegislayne9649
    @annegislayne9649 Рік тому

    Apps #hamsterball

  • @hotelbrh8418
    @hotelbrh8418 2 роки тому

    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?