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

PL/SQL Oracle Discussion :

Trigger récupérant la clause Where


Sujet :

PL/SQL Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Points : 87
    Points
    87
    Par défaut Trigger récupérant la clause Where
    Bonjour,

    est il possible de faire un trigger de type each row qui permet de récupérer la requete passée sur la table et ensuite de la décomposer

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    update table set (numero,designation) = (1,'toto') where id = 30;
    je connais :NEW et :OLD qui gère les valeurs

    mais en PL/SQL y a t'il une méthode pour récupérer la clause where de la requête passée sur la table et qui donc me renverrait clause = "id = 30"

    Merci d'avance pour vos conseils

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    salut ,

    Je vois pas l'utilité de ton trigger.

    1-En forms il y a le :system.last_query aprés tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    substr(:system.last_query,instr(:system.last_query,'where',1)+5)
    remarque :
    il faut aussi vérifier s'il n'y pas pas d'autre where.

    2-En plsql il mfaut voir v$sqlarea

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par salim11
    salut ,
    Je vois pas l'utilité de ton trigger.
    en fait c'est pour tracer les requêtes appliquées ds une autre table

    avec la capacité de les réappliquer en fonction de leur contenu

    genre la clause where est du type id = 30 alors on fait ca*

    mais si la clause where est du type designation = 'toto' alors on fait autres chose...

  4. #4
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    Salut,

    Merci pour l'explication.

    Tu peux voir aussi ce lien:
    http://download-west.oracle.com/docs...0b.htm#2060025

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Points : 87
    Points
    87
    Par défaut
    J'ai regardé du côté de v$sqlarea on a effectivement la requete mais c'est pas gagné...

    je regarderai du côté de l'audit

    mon fantasme de pouvoir isoler la clause where dasn le cadre d'une seule fonction s'éloigne à grand pas, vive le bricolage

    merci qd même

  6. #6
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    salut ,

    il y a le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    substr(nom_query,instr(nom_query,'where',1)+5)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Points : 87
    Points
    87
    Par défaut
    c'est vrai !

    mais j'espérais récupérer un tableau avec :
    champ
    opérateur
    valeur

    du vrai fantasme on devient fainéant en utilisant Oracle c'est tellement puisssant que tu t'attends toujours à trouver ce que tu veux...

    je pars sur ca

    A+ et merci

  8. #8
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut
    Le plus simple reste de traiter l'info au moment de l'appel : peut tu centraliser les updates en faisant appel à une seule proc? Dans ce cas là construis en une qui reçoit les paramètres et la clause where décorellé du reste de la requete...
    Je ne sais pas si ça te semblera clair.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL2008][TSQL] Clause WHERE NOT IN dans un trigger
    Par greg360 dans le forum Développement
    Réponses: 4
    Dernier message: 19/11/2010, 19h19
  2. Ordre des tests dans la clause WHERE
    Par Tans98 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 22/09/2004, 11h52
  3. Problème clause WHERE
    Par nesbla dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/06/2004, 16h07
  4. probleme avec le caractere 'Z' dans ma clause WHERE
    Par dibox dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/04/2004, 13h21
  5. [ character en simple cote ] clause Where
    Par hocinema dans le forum DB2
    Réponses: 3
    Dernier message: 20/02/2004, 11h17

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