Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
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 18/01/2007, 17h18   #1
Membre éprouvé
 
Avatar de argoet
 
Inscription : mai 2002
Messages : 535
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 535
Points : 461
Points : 461
Par défaut Raise_Application_Error Sans Rollback

Os HPUX 11 / Oracle 9i

Est il possible dans un trigger de declancher un "raise_application_error" sans rollback .

L'idée etant la suivante : je veux tracer des inserts dans une table via un trigger "After Insert" sur cette table .
Et apres chaque insert je fais une serie de verification sur les données de cette insertion : au final la verification s'il est KO sort par un (raise_application_error ==> ceci me permettant de prendre en compte le message d'erreur dans l'application qui lance l'insertion) mais je veux que tous ce qui à ete fait (insertion & trace) reste en l'etat (pas de rollback)

Avez vous une idée ?
Merci de votre aide
__________________
Signé : Capitaine Jean-Luc Picard
argoet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2007, 18h53   #2
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Dans votre cas, pour être sûr d'avoir systématiquement une trace de l'exécution du trigger, il faut utiliser une procédure qui démarre une transaction indépendante: celle ci peut être terminée par COMMIT indépendemment de la transaction en cours. Pour cela, il faut créer une procédure avec le pragma AUTONOMOUS TRANSACTION: http://sheikyerbouti.developpez.com/pl_sql/?page=Chap4
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2007, 09h24   #3
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
ça m'étonnerait que ça fonctionne...
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2007, 09h42   #4
Membre éprouvé
 
Avatar de argoet
 
Inscription : mai 2002
Messages : 535
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 535
Points : 461
Points : 461
[pifor] Merci pour cette réponse
Cordialement
@argoet
__________________
Signé : Capitaine Jean-Luc Picard
argoet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2007, 15h15   #5
Membre régulier
 
Inscription : octobre 2006
Messages : 73
Détails du profil
Informations personnelles :
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : octobre 2006
Messages : 73
Points : 85
Points : 85
Attention si tu es en diistribué !
Je n'ai pas essayé depuis mais en 8i, le déclenchement d'une procédure en Autonomous transaction via du distribué ne fonctionnait pas !
Harry Potter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 08h46   #6
Membre éclairé
 
Avatar de Wurlitzer
 
Inscription : avril 2006
Messages : 465
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 465
Points : 368
Points : 368
oui en 8i les autonomous transaction posaint des problèmes (Je me souviens plus du message d'erreur) si on les utilisaient avec des DBLINK.

Mais depuis la 9i c'est reglé (et ca nous a sorti une belle épine du pied )

Donc dans le cas de argoet pas soucis meme si il à des DBLINK
Wurlitzer est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h41.


 
 
 
 
Partenaires

Hébergement Web