1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

triggers em oracle

Discussão em 'Programação' iniciada por d3baser, 3 de Dezembro de 2008. (Respostas: 2; Visualizações: 1895)

  1. d3baser

    d3baser Power Member

    Hey, ao tentar criar este trigger o oracle dá-me erro...

    o trigger:
    create or replace trigger stockTrigger
    before update on produto
    referencing new as nrow
    for each row
    when (nrow.stock < = 20)
    begin
    insert into produto
    values (nrow.IDProd, nrow.descProd, nrow.stock+20);
    end;
    /

    E o erro:
    LINE/COL ERROR
    -------- -----------------------------------------------
    2/4 PL/SQL: SQL Statement ignored
    3/45 PL/SQL: ORA-00984: coluna não é aqui permitida

    Alguém me pode dizer qual o erro? Ele deixa criar, mas diz que foi compilado com erros...

    Já descubri o erro, faltava ":" antes do nrow :)

    Já não dá erro, mas o trigger não "dispara" :\
    Alguém sabe do que possa ser?
     
    Última edição: 3 de Dezembro de 2008
  2. d3baser

    d3baser Power Member

    Ninguém me consegues ajudar? :\

    É um bocado urgente...

    edit:
    Quando o trigger dispara aparece isto:
    ORA-04091: table SCOTT.PRODUTO is mutating, trigger/function may not see it
    ORA-06512: at "SCOTT.STOCKTRIGGER", line 2
    ORA-04088: error during execution of trigger 'SCOTT.STOCKTRIGGER'
     
    Última edição: 3 de Dezembro de 2008
  3. nfh

    nfh Power Member

    Esse erro (ORA-04091) deve-se ao facto de estares a tentar modificar a tabela sobre a qual o trigger está "armado" (o trigger é sobre a tabela PRODUTO e a resposta do trigger é inserir um novo registo nessa mesma tabela).
    Creio que basta despoletares o trigger "after update" em vez de "before update", porque nessa altura a tabela não está bloqueada.
     

Partilhar esta Página