IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Ou placer ces Raise Error


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 98
    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 ??

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 98
    Par défaut
    Vous digerez tous vos cadeaux ou mes qustion sont totalement stupides ???

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 357
    Par défaut
    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

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 98
    Par défaut
    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...

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 357
    Par défaut
    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

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    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.

Discussions similaires

  1. Comment placer ces &
    Par dolin007 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 19/11/2009, 17h05
  2. [Macro] Raise error / warning
    Par green_fr dans le forum Macro
    Réponses: 8
    Dernier message: 26/08/2008, 11h35
  3. Raise Application Error
    Par toony94 dans le forum SQL
    Réponses: 4
    Dernier message: 13/06/2008, 15h57
  4. Constraint error..s-valuti.adb..explicit raise ?
    Par Poseidon62 dans le forum Ada
    Réponses: 7
    Dernier message: 15/05/2007, 15h07
  5. Pouvez vous m'aider a resoudres ces 3 exercices
    Par algorithmique dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 09/08/2002, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo