Pular para o conteúdo
  • Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 13 anos atrás por Fábio Prado.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #104824
    Rodolpho Netto
    Participante

      Pessoal, fiz um trigger para validar se um registro existe ou nao em uma tabela e cadastrar ou não, ele esta funcionando, cadastra se for registro novo, porem quando é registro repetido, ele apresenta o erro que eu fiz, mas apresenta junto mais 2 erros
      seguem em anexo.

      ERRO na linha 1:
      ORA-20001: Codigo do Erro 5000 < esse é meu erro ORA-06512: em "NOTAS.TG_BI_ALUNO", line 7 ORA-04088: erro durante a execuþÒo do gatilho 'NOTAS.TG_BI_ALUNO' ORA-06512: em "NOTAS.PROC_CAD_ALUNO", line 14 ORA-06512: em line 1 CREATE OR REPLACE TRIGGER TG_BI_ALUNO
      BEFORE INSERT
      ON ALUNO
      FOR EACH ROW
      DECLARE
      QUANTIDADE NUMBER;
      BEGIN
      SELECT COUNT(*) INTO QUANTIDADE FROM ALUNO WHERE CD_CPF = :NEW.CD_CPF OR CD_RG = :NEW.CD_RG;
      IF QUANTIDADE >= 1
      THEN
      raise_application_error(-20001,’Codigo do Erro 5000′);
      END IF;
      END;
      /

      #104826
      Sergio Willians
      Mestre

        @rodolpho.nc

        Você poderia resolver isso através de uma UNIQUE CONSTRAINT. Seria bem menos custoso.

        A não ser que seja uma prova de conceito.Aí valeria a pena correr atrás disso !

        #104829
        Fábio Prado
        Participante

          @rodolpho.nc

          O Will está certísssimo. Triggers só devem ser usadas se NÃO existirem outras soluções. Para o seu caso, a UNIQUE CONSTRAINT nas colunas CD_CPF e CD_RG é a melhor solução!

          []s

          Fábio Prado
          http://www.fabioprado.net

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