2012-07-04 1 views
0

Obtention de l'ORA-04079: erreur de spécification de trigger non valide pour ce déclencheur, peut comprendre pourquoi? Tableaux - TESTCOMM_FINDCOMM - 2 chiffres, le prix et CommDéclencheur SQL - fonction d'appel impossible

create or replace trigger TESTCOMM_FINDCOMM 
AFTER 
insert or update on "TESTCOMM" 
for each row 
referencing new as new and old as old 
begin 
    :NEW.Commission:= :NEW.Price*get_Comm(:NEW.Price);  
end; 

Fonction get_Comm

create or replace function get_Comm 
(i_price in NUMBER) 
return NUMBER 
as 
o_COMMISSION_percent PRICECOMMISSION.COMMISSION%type; 
begin 
    select COMMISSION 
into o_COMMISSION_percent 
    from (
     select COMMISSION, 
      rank() over (order by Price desc) rnk 
     from PRICECOMMISSION 
     where PRICE <= i_price 
) where rnk = 1;  

    return o_COMMISSION_percent; 

end;​ 
+0

Cela ressemble à Oracle, n'est-ce pas? SQL est un langage implémenté par plusieurs SGBDR, lequel utilisez-vous? – Ben

Répondre

3

Votre déclencheur est un déclencheur de mise à jour/après insertion - vous ne pouvez pas modifier: nouvelles valeurs après l'insertion/mise à jour.

Plus d'infos sur les déclencheurs AFTER peuvent être trouvés here. Ce que vous devriez regarder est un déclencheur BEFORE.