salut,

je développe une application de traçage d'une base de donnée Oracle où je peut crée des TRIGGER a partir d'un nom d'une table existe dans la base sans connaitre d'avance la structure,
mon problème c 'est dans le cas ou je crée une TRIGGER de type ON UPDATE je doit stocké le nom des colonnes modifiés dans une autre table nommé LMD.

donc voila le problème est claire, c'est du connaître le nom du colonne modifié sans savoir la structure du table à tracé, l'ancienne valeur et la nouvelle valeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Create Trigger JOBS_table BEFORE INSERT OR DELETE OR UPDATE ON JOBS
FOR EACH ROW 
BEGIN 
IF Inserting THEN
INSERT INTO LMD VALUES('JOBS','INSERT','NULL',user,sysdate,'NULL','NULL')
END IF;
IF Deleting THEN
INSERT INTO LMD VALUES('JOBS','DELETE','NULL',user,sysdate,'NULL','NULL')
END IF;
IF Updating THEN
INSERT INTO LMD VALUES('JOBS','UPDATE','Nom_de-colone',user,sysdate,:OLD,:NEW)
END IF;
END;

:NEW = la nouvelle valeur du colonne
:OLD = l'ancienne valeur du colonne


la structure du table LMD:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
 Nom                                       NULL ?   Type
 ----------------------------------------- -------- ----------------------------
 TABLE_LMD                                          VARCHAR2(15)
 TYPE_LMD                                           VARCHAR2(10)
 COLONE_LMD                                         VARCHAR2(15)
 USER_LMD                                           VARCHAR2(10)
 DATE_LMD                                           DATE
 OLD_LMD                                            VARCHAR2(10)
 NEW_LMD                                            VARCHAR2(10)
j'utilise Oracle9i (9.0.1.1.1)

de l'aide svp