1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Problema na criação de trigger no ORACLE 11g

Tenho uma tabela chamada LOGVENDABLOQUEADA e uma sequence chamada logvendabloqueada_id_seq.

Quero criar um trigger (before insert) para essa tabela, de forma a alterar o valor do campo ID.

Para isso, executo no SQL Developer o seguinte:

                CREATE TRIGGER tLOGVENDABLOQUEADA
                               BEFORE INSERT ON LOGVENDABLOQUEADA
                               FOR EACH ROW
                DECLARE
                BEGIN
                               IF( :new.id IS NULL OR :new.id = 0 )
                               THEN
                                               :new.id :=  logvendabloqueada_id_seq.nextval;
                               END IF;
                END;

É apresentada então a seguinte mensagem de erro:

                Erro a partir da linha : 9 no comando -
                CREATE TRIGGER tLOGVENDABLOQUEADA
                               BEFORE INSERT ON LOGVENDABLOQUEADA
                               FOR EACH ROW
                DECLARE
                BEGIN
                               IF( :new.id IS NULL OR :new.id = 0 )
                               THEN
                                               :new.id :=  logvendabloqueada_id_seq.nextval;
                               END IF;
                END;
                Relatório de erros -
                Não serão lidos mais dados do soquete

Caso eu altere o nome do trigger, ele é criado sem problemas (note que o conteúdo do trigger é o mesmíssimo):

            CREATE TRIGGER tbiLOGVENDABLOQUEADA
                           BEFORE INSERT ON LOGVENDABLOQUEADA
                           FOR EACH ROW
            DECLARE
            BEGIN
                           IF( :new.id IS NULL OR :new.id = 0 )
                           THEN
                                           :new.id :=  logvendabloqueada_id_seq.nextval;
                           END IF;
            END;

Alguém pode me explicar o motivo disso?

  • No arquivo tnsnames.ora do seu client do banco a propriedade SERVER da sua conexão está como DEDICATED ou SHARED?

    BrunoAndradeSA   19 de set de 2015
  • Bruno, está como DEDICATED.

    Thiago Siqueira   21 de set de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags oracle banco-de-dados ou faça a sua própria pergunta.