Pular para o conteúdo
  • Este tópico contém 12 respostas, 4 vozes e foi atualizado pela última vez 17 anos, 11 meses atrás por Marcio68Almeida.
Visualizando 13 posts - 1 até 13 (de 13 do total)
  • Autor
    Posts
  • #81490
    bender
    Participante

      Ola pessoal, criei uma sequencia para auto-incrementar determinados campos em algumas tabelas, mas como faco pra aplicar essa “sequence” na tabela q eu quero???

      Obrigado.

      #81491
      Ishii
      Participante

        Bender,

        Você terá que criar uma Trigger para que a cada inserção o campo seja preenchido com esta sequence. Se você quiser pode alterar nos inserts mesmo mas acho que com a Trigger fica mais prático.

        []s Ishii

        #81496
        bender
        Participante

          Vishi… eu sou novo no oracle… e em banco de dados tb, nao sei mecher com isso nao… 😕

          Mas agradeço pela ajuda, valeuuu! ! !

          #81497
          Ishii
          Participante

            Tente:

            CREATE OR REPLACE TRIGGER
            BEFORE INSERT
            on
            for each row
            if :new. is null then
            select .nextval
            into :new.
            from dual;
            end if;
            end;

            []s Ishii

            #81504
            marcelomirandola
            Participante

              Se você estiver utilizando o Form, pode colocar o código no gatilho Pre-Insert.

              select nome_da_sequencia.nextval from dual into v_seq

              ….

              Quando for fazer o insert:

              insert into tabela values (v_seq, …..)

              #81505
              marcelomirandola
              Participante

                Me desculpe bender, o select é assim:

                select nome_da_sequencia.nextval
                into v_seq
                from dual;

                Marcelo 🙂

                #81511
                bender
                Participante

                  Criando a Trigger qd for gravar dados no banco automaticamente o banco ja chama essa TRIGGER ou tenho q chama-la via codigo no meu sistema???

                  Obrigado! ! !

                  #81512
                  marcelomirandola
                  Participante

                    As triggers são disparadas automaticamentes de acordo com os eventos escolhidos.
                    No seu caso, vc deveria criar uma trigger com before insert, para ser acionada sempre antes da inserção dos dados.

                    Toda vez que houver um insert na tabela, esta trigger será acionada automaticamente.

                    #81513
                    bender
                    Participante

                      Galera deu certinho…. 😀

                      muito obrigado pela ajuda de vcs…. !!!

                      #81514
                      bender
                      Participante

                        So mais uma coisinha galera, tem como fazer dentro uma trigger só incrementando mais de uma tabela???

                        Obrigado! ! !

                        #81515
                        marcelomirandola
                        Participante

                          Ter tem, mas não faz sentido.
                          O auto incremento serve para vc incrementar um dado da tabela em questão, como por exemplo um código. Porque você incrementaria o código da tabela de clientes se você estiver inserido dados na tabela de pedidos?

                          #81517
                          bender
                          Participante

                            Hummm, é verdade marcelo, nao faz sentido oq estou pensando nao…

                            valeu pela ajuda! ! !

                            #81518
                            Marcio68Almeida
                            Participante

                              [quote=”bender”:2jpu62h1]So mais uma coisinha galera, tem como fazer dentro uma trigger só incrementando mais de uma tabela???
                              [/quote]
                              Muito cuidado com as triggers…
                              Quando você faz uma trigger atualizar outra tabela, você inicia um processo em cascata, já vi esse processo abrangendo vários níveis (uma trigger starta outra que starta outra e assim por diante), se alguma parte do processo dá erro, é necessário dar rollback em todo o processo, sem dizer que todas as tabelas envolvidas ficam em lock enquanto o processo não está resolvido…

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