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 : Nom de la colonne Modifié


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Par défaut TRIGGER : Nom de la colonne Modifié
    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

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Regardez l'auditing

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Par défaut
    g pas dit que cette application est sous le cadre d'un mini projet en java et que je dois utilisé les trigger

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Pour moi, le seul moyen est de créer une fonction PL/SQL "génératrice de trigger".

    Elle prendrai en paramètre le nom de la table.

    Cette fonction irai dans le catalogue oracle rechercher la définition de la table en question et génèrerai le code du trigger qui serait alors retourné au code appelant pour exécuter le DDL du trigger.

    Afin de déterminer ses colonnes modifiées, ce trigger devrait tester les champs de la tables (old/new) et faire l'insert sur la table d'audit si nécessaire.

    Ensuite tu exécuterai ce "trigger factory" pour chacune des tables voulues, te générant ainsi des triggers adpatés...
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  5. #5
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Par défaut
    tu peu me donné un exemple de fonction ?

Discussions similaires

  1. [TRIGGER] nom de colonne on UPDATE
    Par shadeoner dans le forum SQL
    Réponses: 2
    Dernier message: 12/06/2008, 10h14
  2. [HSQLDB] Modifier le nom d'une colonne
    Par jers85 dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 11/01/2008, 15h35
  3. Report Builder (6.08) nom de colonne modifié
    Par ogaudinu dans le forum Reports
    Réponses: 10
    Dernier message: 30/07/2007, 15h00
  4. Modifier le nom d'une colonne d'une table existante
    Par fatati dans le forum Administration
    Réponses: 4
    Dernier message: 18/12/2006, 18h10
  5. comment modifier le nom d'une colonne via VBA?
    Par Invité dans le forum Access
    Réponses: 6
    Dernier message: 24/11/2005, 15h36

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