Bonsoir tout le monde

j'ai a developper un trigger , ce dernier s'execute sans prob lorsque je passe a update une valeur qui existe dans la table , sinon ca m'affiche une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
update supporte set codebar='222' where id_carte='2'
       *
ERREUR Ó la ligne 1 :
ORA-01403: aucune donnÚe trouvÚe
ORA-06512: Ó "UNICAMPUS.TROUVE_ID_PERSONNE", ligne 5
ORA-06512: Ó "UNICAMPUS.TRIGGER_CODEB", ligne 5
ORA-04088: erreur lors d'exÚcution du dÚclencheur 'UNICAMPUS.TRIGGER_CODEB'
sachant que l'enregistrement avec id_carte =2 n'existe pas dans la table supporte.
voila mon trigger :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
CREATE OR REPLACE TRIGGER trigger_codeb BEFORE UPDATE OR INSERT ON SUPPORTE FOR EACH ROW 
DECLARE sub_id VARCHAR(30);
BEGIN 
sub_id:= trouve_id_personne(:new.id_carte);
if (sub_id IS NOT NULL) then
update  asynchrone@dblink1  set  codebar= :new.codeBar  where id_personne = substr(sub_id,1,(length(sub_id)-12)) ;
end if;
END ;
ma fcontiorn trouve_id_personne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
CREATE OR REPLACE FUNCTION trouve_id_personne(id_c VARCHAR2)
RETURN varchar2 IS id_p varchar(20);PRAGMA AUTONOMOUS_TRANSACTION;
 
BEGIN
select id_personne into id_p from porteur, supporte where porteur.id_carte=supporte.id_carte  and porteur.id_carte= id_c;
RETURN id_p;
END;
je pense que l'erreur vient lorsque la fonction retourne NULL , je ne sais pas comment gerer cela