title: Impede the database writing with a trigger
body: <p>I wrote this trigger to impede the database's writing</p>
  
  <pre><code>create or replace trigger spese_autorizzate_trg
  before insert or update on spese
  for each row
  declare 
      boolean integer := 0;
      voceSpesa tipospesa.descrizione%TYPE := NULL;
  
  begin  
      select
          descrizione into voceSpesa
      from
          tipospesa
      where
          id = :new.tipospesa
          and approvazione = 'n';
  
  
      if voceSPesa is NULL then  
          raise_application_error(-20000, 'La spesa '||voceSpesa||' non è rimborsabile');
      end if;
  end;
  </code></pre>
  
  <p>If the value of tipospesa is 4 or 5, the writing should be impeded 
  but when I insert a row like this</p>
  
  <pre><code>insert into spese(id, importo, tipospesa, data) values (4, 20, 3, TO_DATE('15-jul-18', 'DD-MON-RR'))
  </code></pre>
  
  <p>I have this error</p>
  
  <pre><code>Error report:
  SQL Error: ORA-01403: no data found
  ORA-06512: at "PARLAMENTO2018.SPESE_AUTORIZZATE_TRG", line 7
  ORA-04088: error during execution of trigger
  'PARLAMENTO2018.SPESE_AUTORIZZATE_TRG'
  01403. 00000 -  "no data found"
  *Cause:    
  *Action:
  </code></pre>
  
  <p>and the writing isn't done. Why? </p>