Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/01/2011, 19h05   #1
Nouveau Membre du Club
 
Inscription : août 2009
Messages : 103
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 103
Points : 25
Points : 25
Par défaut TRIGGER insert AVEC GESTION ERREURS

Bonsoir,
je suis en train d'essayer d' écrire un trigger (before insert ) qui me permettrait de refuser cet insert en fonction du résultat d'une condition.

le problème avec mon code est que l' exception est bien levée mais le traitement continue;
j'aimerais lever cette exception et arrêter le traitement insert .
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
CREATE OR REPLACE
TRIGGER TRIGGER1 
before INSERT ON EMPLOYEES 
FOR each row
declare
A exception;
 
BEGIN
 
 
IF :new.employee_id > 1000 then
 
testo.add_nouv_arriv(:new.first_name,:new.last_name,:new.hire_date);
 
DBMS_OUTPUT.PUT_LINE('ajout'||:new.employee_id);
else
 
RAISE A ;
 
END IF;
 
exception 
When A then DBMS_OUTPUT.PUT_LINE('probleme identifiant doit etre superieur à 1000');
 
END;
Pourriez vous me dire comment arreter le traitement de cet insert.
Merci
pepitoluna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2011, 22h15   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
L'erreur est catchée par le EXCEPTION WHEN A
Il suffit que tu rajoutes un RAISE; après le DBMS_OUTPUT.
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2011, 22h17   #3
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
Cela dit, utiliser un DBMS_OUTPUT pour une erreur ce n'est pas bon. Le mieux est d'utiliser RAISE_APPLICATION_ERROR (voir le tuto sur les erreurs)
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h51.


 
 
 
 
Partenaires

Hébergement Web