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 sur modification


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 47
    Par défaut Trigger sur modification
    Salut internet,

    Alors voilà je dois créer un trigger lorsqu'un utilisateur va modifier une table,ce trigger doit rajouter 2 champs à la table :
    -la date de modification
    -l'id ou le nom de la personne qui a effectué cette modification

    ça doit donner un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    create or replace trigger Coucou
    before insert
    on tableKKK
       begin
          alter table tableKKK
                 add date_modif date
                 add nom_personne varchar2(50)
     
          insert into tableKKK (date_modif,nom_personne) values(to_char(sysdate,'DD/MM/YYYY HH24:MI:SS'),????)
     
      end
    Alors voilà je ne sais pas comment faire pour récupérer la personne qui a effectué la modification??pouvez vous m'aider?
    Et sinon si vous pouvez me donnez votre avis pour le trigger?

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    quelle drole d'idée. Pourquoi ne pas ajouter les colonnes une fois pour toute et mettre à jour les valeurs sur l'UPDATE ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ALTER TABLE tableKKK
                 ADD (date_modif date,nom_personne varchar2(50));
     
    CREATE OR REPLACE TRIGGER Coucou
    before INSERT
    ON tableKKK
       begin
          SELECT 
          :new.date_modif := SYSDATE;
          :new.nom_personne := '????';
     
    end

    Avec ton code, déjà le code DDL est interdit en PL/SQL, la deuxième ligne insérée provoquera une erreur parce que les colonnes existent dejà, tu inséreras une ligne avec juste le nom et la date ce qui ne permet pas de savoir quelle ligne cette personne a inséré

    Citation Envoyé par dany.bill Voir le message
    Et sinon si vous pouvez me donnez votre avis pour le trigger?
    C'est n'importe quoi Recherche trigger d'audit éventuellement, tu devrais avoir des infos intéressantes

  3. #3
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 47
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C'est n'importe quoi  Recherche trigger d'audit éventuellement, tu devrais avoir des infos intéressantes


    Oui c'est vrai tu a raison,mais bon c'est un premier jet(bien pourri ok..) en fait c'est pour la journalisation des tables.

    Mais tu ne ma pas répondu?Comment connaitre la personne qui a effectué la modif?

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    fallait pas demander ce qu'on en pense

    Regarde dans v$session l'info que tu préfères

  5. #5
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 47
    Par défaut
    Ok merci OraFrance.

    Pour ceux qui aurait les mêmes question,y a aussi "DBA_AUDIT_TRAIL" qui contient pas mal de truc.

    Bon ben je teste tout ça et je reviens.
    Bisou?

  6. #6
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 47
    Par défaut
    Re internetl,

    Alors voila pour faire un test (parce que apparement je ne sais même plus créer de trigger),j'ai crée un table PERSONNE qui ne contient qu'un seul champ 'id'.
    Puis j'ai crée une table Personne_LOG qui contiendra l'id de la personne (de la table Personne),la date de l'insertion et le nom de la personne qui a fait cette insertion.

    Alors en code ça donne ça (je sais c'est pourri ça me fait une erreur):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE OR REPLACE TRIGGER  "Test" AFTER insert ON PERSONNE
    declare nom varchar2(50);
     
    BEGIN
     
      select username from v$session into nom;
      insert into personne_log(personne_modif) values(nom);
     
     
     
    END;
    Apparement la syntaxe n'ai pas bonne...ça fait longtemps que j'ai pas fait de PL/SQL...donc soyez indulgent...
    P.S :ici j'ai testé que sur le nom....vu que ça donne une erreur pas la peine d'aller plus loin

Discussions similaires

  1. trigger sur deux tables
    Par Shabata dans le forum Développement
    Réponses: 4
    Dernier message: 04/05/2004, 16h55
  2. triggers sur plusieurs bases de données
    Par Shabata dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/05/2004, 10h02
  3. Trigger sur une colonne ?
    Par hpalpha dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 14h16
  4. Trigger sur select
    Par bilo2000 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/02/2004, 13h39
  5. Pb Trigger sur vue
    Par cosminutza dans le forum Développement
    Réponses: 3
    Dernier message: 28/07/2003, 16h37

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