Pular para o conteúdo
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #91710
    priscilla
    Participante

      Boa tarde pessoa,

      Preciso criar uma trigger da seguinte forma:

      Que impeça a exclusão do registro cujo o código seja ZERO.

      Fiz o seguinte código:

      CREATE OR REPLACE TRIGGER exclusao
      BEFORE DELETE ON TABLECID
      FOR EACH ROW
      DECLARE
      cod number(5);
      BEGIN
      SELECT CODCID INTO cod FROM TABLECID;
      IF cod = 0 THEN
      RAISE_APPLICATION_ERROR (-20000, ‘Erro: não é permitida está operação!’);
      END IF;
      END;

      Ela compila, mas quando tento excluir ocorre o seguinte erro:

      15:35:45 ORA-04091: a tabela PRISCILLA.TABLECID é mutante; talvez o gatilho/função não possa localizá-la
      15:35:45 ORA-06512: em “PRISCILLA.EXCLUSAO”, line 4
      15:35:45 ORA-04088: erro durante a execução do gatilho ‘PRISCILLA.EXCLUSAO’

      Se alguém puder me ajudar eu agradeço.

      Att.

      Priscilla

      #91712
      Avatar photoLeonardo Litz
      Participante

        Priscila, boa tarde.

        Creio que vc não necessite fazer o select no registro novamente, voce pode utilizar a variável :OLD:

        CREATE OR REPLACE TRIGGER exclusao
        BEFORE DELETE ON TABLECID
        FOR EACH ROW
        DECLARE
        BEGIN

        IF :old.CODCID= 0 THEN
        RAISE_APPLICATION_ERROR (-20000, 'Erro: não é permitida está operação!');
        END IF;
        END;

        Vlw Leonardo Litz

        #91714
        priscilla
        Participante

          Leonardo,

          Executei o código, mas deu o mesmo erro.

          16:12:21 ORA-20000: Erro: não é permitida está operação!
          16:12:21 ORA-06512: em “PRISCILLA.EXCLUSAO”, line 3
          16:12:21 ORA-04088: erro durante a execução do gatilho ‘PRISCILLA.EXCLUSAO’

          a primeira mensagem está certa as outras duas eu não sei.

          #91715
          Avatar photoLeonardo Litz
          Participante

            Priscila, são mensagens diferentes.

            A do seu primeiro post é uma mensagem de trigger mutante.

            Já a mensagem de seu ultimo post é a mensagem que vc programou para paracer.

            Parece que o código esta correto. Esta fazendo oque fui programado para fazer, impedir a deleção de registros com código 0.
            

            Vlw Leonardo Litz

            #91716
            priscilla
            Participante

              Deu certo, os registros com códigos diferentes de zero eu consigo excluir, mas o 0 não. Obrigada

              #91722
              Anônimo

                Deu certo então?

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