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 :

[11g] Problème avec trigger


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut [11g] Problème avec trigger
    Hello,
    j'ai un petit problème avec un trigger.

    J'ai une table "employes" qui contient entre autre le salaire de l'employé et le nombre d'enfants qu'il a.
    Il faut que quand on modifie le nombre d'enfant, on enlève/ajoute 200.- par enfant au salaire.

    Mon code actuel est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create or replace trigger TRG_PRIME_ENFANT
    after update
    on EMPLOYES        -- sur la table EMPLOYES
    for each row  -- pour chaque ligne
    begin
      if (:new.NB_ENF !=  :old.NB_ENF) then
        UPDATE EMPLOYES SET salaire = salaire  + 200 * (:NEW.NB_ENF -  :OLD.NB_ENF);
      end if ;
    end ;
    Mais lors de la modification du nombre d'enfants d'un employé, j'ai l'erreur suivante :

    UPDATE "ELCD42"."EMPLOYES" SET NB_ENF = '1' WHERE ROWID = 'AAAW+NAAEAAAEJkAAA' AND ORA_ROWSCN = '37229262'

    One error saving changes to table "ELCD42"."EMPLOYES":
    Row 1: ORA-04091: la table ELCD42.EMPLOYES est en mutation ; le déclencheur ou la fonction ne peut la voir
    ORA-06512: à "ELCD42.TRG_PRIME_ENFANT", ligne 3
    ORA-04088: erreur lors d'exécution du déclencheur 'EJR21.TRG_PRIME_ENFANT'
    Je ne comprend pas d'où vient le problème, quelqu'un aurait une piste pour m'aider ?

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 69
    Par défaut
    hello

    Je pense que ca ne marche pas à cause du after on ne peut pas modifier la valeur de :new.nom_col dans un trigger after.

    Essaye plutot qqch dans ce style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE OR REPLACE TRIGGER TRG_PRIME_ENFANT
    before UPDATE
    ON employes        -- sur la table EMPLOYES
    FOR each row       -- pour chaque ligne
    begin
      IF (:new.NB_ENF !=  :old.NB_ENF)   then
       :new.salaire := :old.salaire +200 *(:NEW.NB_ENF -  :OLD.NB_ENF) ;
      end IF ;
    end ;
    J'espere que ca t'aidera

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut
    Je te remercie beaucoup !
    C'était bien ça et la requête de mise à jour qui avait une mauvaise syntaxe.

    Bon après-midi

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 69
    Par défaut
    No prob...
    bonne aprem

  5. #5
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    Reviens ... XDATA ... tu as oublié le tag

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut
    Ah oui !

    Voilà c'est tout bon

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec trigger MySQL
    Par el_kiko dans le forum MySQL
    Réponses: 1
    Dernier message: 28/02/2010, 14h23
  2. Problème avec trigger for delete
    Par tornade69 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 07/10/2008, 09h37
  3. Problème avec trigger (table INSERTED)
    Par ygrim dans le forum Développement
    Réponses: 1
    Dernier message: 20/04/2008, 21h00
  4. [WPF] Problème avec Trigger
    Par Heroes dans le forum C#
    Réponses: 7
    Dernier message: 16/07/2007, 16h58
  5. [9i] problème avec trigger after logon
    Par Michael# dans le forum Oracle
    Réponses: 2
    Dernier message: 17/03/2005, 12h14

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