Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour 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 27/12/2007, 16h57   #1
Invité régulier
 
Inscription : octobre 2006
Messages : 77
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 77
Points : 5
Points : 5
Par défaut Ou placer ces Raise Error

Bonjour,

Je dispose dans ma base d'une table d'erreur ayant pour but de recolter les erreurs oracle.
Pour chaques tables j'ai un trigger d'auto_increment. BEFORE INSERT
Pour certaines tables j'ai un trigger de replication recopiant les insert et mises a jour dans une base historique de securite. Ils sont de forme AFTER INSERT OR UPDATE

-- Je suppose que le trigger de replication (AFTER INSERT OR UPDATE) ne s'execute pas en cas d'erreur dans mon insert, est ce vrai ?

Je voudrais catcher des exceptions lors de mes insert et update de toutes les tables de mon appli pour remplir la table erreur. Je pensais donc rajouter un trigger faisant cela...
-- Dois je privilegier le BEFORE ou LE AFTER INSERT OR UPDATE ??
-- vu qu'il y'as deja un trigger AFTER INSERT Or UPDATE lequel de mon trigger de replication s'execute en premier ? Cela peut il poser probleme ?
-- Je voudrais inserer la requete dans mon message d'erreur, ce qui peut etre fais par prog (avec des if insert else if update et en utilisant :NEW). Existe t'il un raccourci permettant de recuperer directement la requete sous form de string ??
-- L'usage de trigger pour Raiser des Exceptions est il une bonne pratique ?
-- Existe t'il des scripts d'exemple ou des pratiques etablies comme les meilleures ?
-- il n'y as pas de test ou de contraintes sur le fonctionnel des données ( a part les cles primaires et secondaires). Je met donc un commit des la fin de mes transactions. dois je d'abord tester la presence d'exception avant de commiter ??
kramer Mc Barreth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2007, 15h32   #2
Invité régulier
 
Inscription : octobre 2006
Messages : 77
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 77
Points : 5
Points : 5
Vous digerez tous vos cadeaux ou mes qustion sont totalement stupides ???
kramer Mc Barreth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2007, 16h21   #3
Membre confirmé
 
Inscription : juillet 2007
Messages : 357
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 357
Points : 226
Points : 226
si tu donnair la definition de ta table et le code de ton protorype de trigger ce serai deja plus facile.

Sinon je dirai de privilegier le before
ZashOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 18h04   #4
Invité régulier
 
Inscription : octobre 2006
Messages : 77
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 77
Points : 5
Points : 5
je me suis un peu mieux renseigné pour apprendre que le JDBC etait en AUTOCOMMIT ON. Cela veux dire que chaques transaction est forcement commitée ??
J'ouvre une connexion depuis mon appli java -> Ouverture de la transaction.
Je ferme cette meme connexion -> Fermeture de la transaction ??

En fait, je ne comprend pas ou intercepter mes erreurs, les triggers intervenant avant ou apres les insert/update. les exceptions apparaissant pendant la transaction...
A priori il me semble logique de faire un trigger AFTER pour raiser mes exceptions, ca serait etrange de raiser une exception avant meme qu'oracle ai tenté l'insert.... Vous confirmez ?

Je n'ai pas encore de prototype de trigger si ce n'est ceux servant a l'auto_increment de mes sequences pour mes IDs.

Ca dois paraitre con comme question, (peut etre les effluves alcoolisées des fetes)
Desole d'avance pour l'ultra-newbitude...
kramer Mc Barreth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 20h18   #5
Membre confirmé
 
Inscription : juillet 2007
Messages : 357
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 357
Points : 226
Points : 226
il y a deux type d exceptions , celles d oracle , comme une division par O et tes propres exceptions.

pour celles d'oracle je les gere perso toujours dans le code de mon appli a l'insertion jusqu'a la ca m a toujours suffi.

Pour tes propres exception et bien ca depend de ce que tu veux faire sans exemple c est un peu dure. Si tu veux generer une exception et la traiter pour manipuler tes donnnes inserer alors faut que tu d*fasse en Before

Sinon lance toi et fait des test
ZashOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 21h02   #6
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
Citation:
Envoyé par kramer Mc Barreth Voir le message
je me suis un peu mieux renseigné pour apprendre que le JDBC etait en AUTOCOMMIT ON. Cela veux dire que chaques transaction est forcement commitée ??
J'ouvre une connexion depuis mon appli java -> Ouverture de la transaction.
Je ferme cette meme connexion -> Fermeture de la transaction ??
Si la connexion JDBC est en mode autocommit, cela signifie qu'il y a un COMMIT après chaque exécution d'une instruction SQL d'après la documentation. Vous avez tout intérêt à désactiver ce mode.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor 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 16h56.


 
 
 
 
Partenaires

Hébergement Web