Pular para o conteúdo
Visualizando 10 posts - 1 até 10 (de 10 do total)
  • Autor
    Posts
  • #78974
    djdigao
    Participante

      Bom dia!
      Sou novato com o Oracle e estou querendo fazer uma trigger que delete os dados da seguinte maneira
      Tenho uma tabela X e uma Y

      ———————————-
      Tabela X
      ———————————-
      ID_X
      NOME

      ———————————-
      Tabela Y
      ———————————-
      ID_Y
      ID_X
      Endereço

      Quando eu fizer um DELETE na tabela X a trigger tem que deletar todos os códigos referentes a ele na tabela Y, é como um relacionameto de um para todos em um banco de dados ACCESS por exemplo. Espero ter explicado direitinho o que quero fazer, desde já agradeço a todos valeu 🙂

      #78983
      Edgar
      Participante

        CREATE OR REPLACE TRIGGER TRG_DEL_TABELA_X
        BEFORE DELETE ON TABELA_X
        FOR EACH ROW
        BEGIN

        DELETE 
           FROM TABELA_Y
         WHERE ID = :OLD.ID ;
        

        END ;

        😮 ld – referencia da tabela mutante, no caso a tabela_x
        before delete – antes de excluir o registro
        for each row – para cada linha executa a trigger

        #78986
        djdigao
        Participante

          Opa Edgar blz?
          Então no caso eu teria que usar OLD.ID_X ou somente OLD.ID??
          Pois o Campo seria no caso do exemplo ID_X.

          #78989
          djdigao
          Participante

            Deu certo funcionou belezinha, muito obrigado Edgar valeu 🙂

            #78998
            Avatar photoLeonardo Litz
            Participante

              Olá colega, existe tb uma outra forma de se fazer isso, é alterando o on delete da chave estrangeira da tabela filho para cascade.

              Para isso vc deve dropar a constraint e depois reclia-la como delete cascade.

              Ex:

              alter table tb_cep drop constraint R_82

              alter table tb_cep add constraint R_82 foreign key (IDCIDADE, IDBAIRRO)
              references TB_BAIRRO (IDCIDADE, IDBAIRRO) on delete cascade;

              #79000
              djdigao
              Participante

                Hummmm, legal saber disso tb Litz vou fazer um teste aqui para ver como é que funciona dessa forma. Galera agradeço de coração mesmo a ajuda de vcs, sou novato ainda em oracle mais quero logo estar firme no assunto, se eu puder ajudar vcs de alguma forma contem comigo, sou analista de desenvovimento atualmente estou trabalhando com C#, qualquer coisa posso dar um help vcs tb valeu e muito obrigado novamente.

                #79003
                djdigao
                Participante

                  Aproveitando a ajuda de vcs, teria como eu fazer uma replicação de dados de um schema para outro, por exemplo tenho um schema chamado Empresa_Sys e um outro chamado Empresa_Teste, eu gostaria que tudo que fosse inserido, alterado e excluído fosse replicado para o Empresa_Teste, isso é possível fazer? Obrigado pela força 🙂

                  #79006
                  chduarte
                  Participante

                    Isso é possivel fazer utilizando uma feature bem complexa do Oracle chamada Advanced Replication.

                    Ou vc pode criar um trigger para cada evento para replicar os dados mas é muito complexo e pode judiar da performance.

                    []

                    #79012
                    djdigao
                    Participante

                      Opa chduarte, blz??
                      Aproveitando então eu poderia fazer um backup do schema e restaurar esse backup no schema Empresa_Teste? Como eu faria para fazer um backup só do schema Empresa_sys? Tem como fazer o backup só dele sem ser do banco inteiro?

                      #79013
                      chduarte
                      Participante

                        Vc pode fazer um script para uma vez por dia, fazer um export do usuario sys e import para o usuario teste.

                        []

                      Visualizando 10 posts - 1 até 10 (de 10 do total)
                      • Você deve fazer login para responder a este tópico.
                      plugins premium WordPress