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 :
sachant que l'enregistrement avec id_carte =2 n'existe pas dans la table supporte.
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'
voila mon trigger :
ma fcontiorn trouve_id_personne :
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 ;
je pense que l'erreur vient lorsque la fonction retourne NULL , je ne sais pas comment gerer cela
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;
Partager