Salve a tutti, sto impazzendo per un errore su un trigger, il quale funziona correttamente in inserimento sulla tabella, ma in cancellazione e modifica dà l'errore, sebbene il trigger non debba essere innescato sulla cancellazione ma solo sull'inserimento e modifica, il codice del trigger è il seguente:

codice:
create or replace trigger "DB_POLIGONO_LACUNA_T1"
BEFORE insert or update ON "DB_POLIGONO_LACUNA"
 for each row

declare
   LACUNA_N EXCEPTION;  
   LACUNA_Y EXCEPTION;  
   LACUNA_C EXCEPTION
   FLAG_ERROR EXCEPTION;
   cursor ID_POLIGONI_CUR is
      select ID_POL_LAC FROM DB_POLIGONO_LACUNA WHERE ID_POL_LAC = :new.POLIGONO_ASSOCIATO and FLAG_LACUNA = 1;  
   ID_POLIGONI ID_POLIGONI_CUR%ROWTYPE;

begin
if INSERTING or UPDATING then

   if :new.FLAG_LACUNA = 0 or :new.FLAG_LACUNA = 1 THEN 
      if :new.FLAG_LACUNA = 0 and                
         :new.POLIGONO_ASSOCIATO IS NOT NULL THEN  
             RAISE LACUNA_Y;
      end if;
      
      open ID_POLIGONI_CUR;
      fetch ID_POLIGONI_CUR into ID_POLIGONI;

      if :new.FLAG_LACUNA = 1 THEN   
         if :new.POLIGONO_ASSOCIATO IS NULL THEN 
            RAISE LACUNA_N;
         end if;
         if :new.ID_POL_LAC = :new.POLIGONO_ASSOCIATO                or ID_POLIGONI.ID_POL_LAC IS NOT NULL      THEN   
               RAISE LACUNA_C;
         end if;
      end if;
      
      else
         RAISE FLAG_ERROR;
       
      close ID_POLIGONI_CUR;
end if;
end if;
EXCEPTION
   WHEN LACUNA_N THEN
      RAISE_APPLICATION_ERROR (-20001, 'la lacuna deve essere associata ad un poligono');
   WHEN LACUNA_Y THEN
      RAISE_APPLICATION_ERROR (-20002, 'il poligono non è una lacuna non può essere associato ad un altro poligono');
   WHEN LACUNA_C THEN
      RAISE_APPLICATION_ERROR (-20003, 'la lacuna fa riferimento ad un altra lacuna');
   WHEN FLAG_ERROR THEN
      RAISE_APPLICATION_ERROR (-20004, 'flag può essere uguale soltanto a 0 o a 1');
      
end;
l'errore è il seguente: error ORA-04091: La tabella SYSTEM.DB_POLIGONO_LACUNA è in fase di modifica, il trigger/funzione non può leggerla ORA-06512: a "SYSTEM.DB_POLIGONO_LACUNA_T1", line 7 ORA-06512: a "SYSTEM.DB_POLIGONO_LACUNA_T1", line 21 ORA-04088: errore durante esecuzione del trigger 'SYSTEM.DB_POLIGONO_LACUNA_T1'

a quanto pare l'errore viene dato sulle linee di codice in cui compare :new...... è come se il trigger venisse innescato anche per la cancellazione, mi sfugge qualcosa?

grazie mille per l'aiuto