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 29/11/2010, 22h14   #1
Invité de passage
 
Inscription : juillet 2009
Messages : 20
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 20
Points : 2
Points : 2
Par défaut Problème sur un trigger

Bonjour,

Dans le cadre d'un TP j'ai écrit un trigger, mais il y a une erreur de syntaxe que je ne vois pas

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
CREATE TRIGGER erreur_ora
AFTER INSERT ON alert_log FOR EACH ROW
vSender VARCHAR2(30):='admin@iutinfo.fr';
vTo VARCHAR2(30):='test@gmail.com';
vSubj VARCHAR2(50):='Message ORA- détécté';
vMType VARCHAR2(30):='text/plain; charset=us-ascii';
BEGIN
IF new.LINE LIKE 'ORA-%' THEN
INSERT INTO event_log (insert_date, STATUS, error_message, line_error_id) VALUES (sysdate, 'non resolu', new.LINE, new.LINE_ID);
utl_mail.send(vSender, vTo, NULL,NULL, vSubj, new.LINE, vMType, NULL);
END IF
COMMIT;
END;
L'erreur renvoyé par oracle est la suivante :

Citation:
ORA-04079: spécification de déclencheur erronée
04079. 00000 - "invalid trigger specification"
*Cause: The create TRIGGER statement is invalid.
*Action: Check the statement for correct syntax.
Voyez-vous une erreur quelque part ?

Merci d'avance

Anthonyplay
anthonyplay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 23h03   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 925
Points : 1 925
END IF;
mais je ne sais pas si c'est la seule erreur de syntaxe.
Par contre il est déconseillé de faire du non transactionel comme envoyer un mail depuis un trigger pour 2 raisons :
1/ Un trigger before update ou delete peux être exécuté plusieurs fois :
http://download.oracle.com/docs/cd/B...htm#sthref1169
http://tkyte.blogspot.com/2005/08/pa...g-restart.html

2/ Tu ne veux pas envoyer de mail si la transaction est rollbackée, une bonne méthode est d'utiliser un job :
http://asktom.oracle.com/pls/apex/f?...:2391265038428
http://asktom.oracle.com/pls/apex/f?...:7267435205059

C'est peut être aller un peu loin pour un TP, mais pour ta culture professionelle ce sont de bons articles à lire.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 14h38   #3
Membre Expert
 
Inscription : avril 2006
Messages : 1 024
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 024
Points : 1 175
Points : 1 175
Je vois un bon petit packet d'erreurs de syntaxe + le Commit qui va planter car le trigger n'est pas dans une transaction autonome (PRAGMA AUTONOMOUS_TRANSACTION)

Ces erreurs doivent être consignées dans la vue USER_ERRORS, vous devriez aller voir de ce coté là.
remi4444 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 16h51   #4
Invité de passage
 
Inscription : juillet 2009
Messages : 20
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 20
Points : 2
Points : 2
Je vous remercie pour vos réponse !
anthonyplay 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 01h40.


 
 
 
 
Partenaires

Hébergement Web