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 04/04/2007, 18h17   #1
Membre du Club
 
Inscription : décembre 2003
Messages : 168
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 168
Points : 41
Points : 41
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 :
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
lunab54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 18h35   #2
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

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

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
salut ,

Je vois pas l'utilité de ton trigger.

1-En forms il y a le :system.last_query aprés tu fais
Code :
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
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 18h41   #3
Membre du Club
 
Inscription : décembre 2003
Messages : 168
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 168
Points : 41
Points : 41
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...
lunab54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 18h52   #4
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

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

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Merci pour l'explication.

Tu peux voir aussi ce lien:
http://download-west.oracle.com/docs...0b.htm#2060025
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 19h19   #5
Membre du Club
 
Inscription : décembre 2003
Messages : 168
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 168
Points : 41
Points : 41
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
lunab54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 19h35   #6
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

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

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
salut ,

il y a le
Code :
substr(nom_query,instr(nom_query,'where',1)+5)
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 19h41   #7
Membre du Club
 
Inscription : décembre 2003
Messages : 168
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 168
Points : 41
Points : 41
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
lunab54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 22h14   #8
LEK
Membre éclairé
 
Inscription : mai 2005
Messages : 596
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 596
Points : 363
Points : 363
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.
LEK 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 01h25.


 
 
 
 
Partenaires

Hébergement Web