|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 4 ![]() |
Bonjour,
Je suis débutant en PL/SQL et j'ai absolument besoin de faire un trigger dans lequel je selectionne le noms des champs de ma table (noms que je ne connais pas) que je stocke dans un tableau... le problème consiste à comparer les anciennes et nouvelles valeurs de chaque champs lors d'un update sur cette table genre : IF OLD.Tableau(i)<>NEW.Tableau(i) THEN... le probleme est qu'ORACLE ne possède pas de variable dynamique et que je suis obligé de taper les noms en dur. Ce que je ne veux (et peux) pas faire en vous remerciant par avance de votre réponse Frank |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
il y a peut-être une autre méthode que ce genre de trigger. Que veut tu vérifier exactement ?
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 4 ![]() |
En fait, je veux comparer l'ancien enregistrement et le nouvel enregistrement
d'une table (suite à un update) et déclencher via un trigger sur la table, une historisation de ces changements dans une table historique. La table a modifier contient beaucoup de champs (une centaine), je ne veux pas les écrire en dur dans mon trigger : OLD.nomChamps1<>NEW.nomChamp1. je veux utiliser un tableau qui contient le nom des champs de la table et acceder à ces champs de manière dynamique... OLD.tableau(i) Est ce possible ? |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 4 ![]() |
j'ai bien essayé de contourner le problème en essayant de "chopper"
la valeur du old et du new dans une requête. Requete:='SELECT :OLD.' || tableau(i) || ' into :var FROM DUAL'; EXECUTE IMMEDIATE Requete ; Tableau(i) contenant le nom de la colonne mais celà ne marche pas. |
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
tu peux éventuellement te servir de execute immediate pour récupérer le nom des colonnes mais ça me parait très compliqué... ce serait nettement plus simple de mettre les noms en dur et probablement plus performant
je crains que ce ne soit pas faisable de développer un trigger générique |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 4 ![]() |
Merci beaucoup
je vais essayer une autre méthode que ce trigger générique qui devait s'adapter à plusieurs table... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com