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 :

problème variable de liaison trigger


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Points : 52
    Points
    52
    Par défaut problème variable de liaison trigger
    bonjour atous ,

    je veux créer un trigger qui se déclanche aprés insertion et qui transforme une prime en euros si la date du champs ANNEE est anterieur a 20001 .

    sur la table :
    GAIN (NUJOUEUR, LIEUTOURNOI, ANNEE, PRIME, SPONSOR)

    j'ai crée le trigger suivant :

    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 or replace trigger majGain
     
    after insert on gain
     
    for each row 
    when (:new.annee < 2001) 
     
    begin
     
    :new.prime := :new.prime * 0,15244901 ;
     
    end;
    /

    mais le méssage d'erreur suivant :

    UTILISATION INCORRECTE DE LA VARIABLE DE LIAISON DANS LE DECLENCHEUR

    je trouve pas la soulution
    merci d'avance de votre aide

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    en AFTER INSERT c'est trop tard pour modifier le :new... faut être en BEFORE INSERT

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Points : 52
    Points
    52
    Par défaut
    j'ai essayé avec before mais j'ai toujour le même message d'erreur
    sur la laigne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    when (:new.annee < 2001)
    avec une * au dessous de 2001

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    when (new.annee < 2001)
    sans :, t'aurais fait une recherche dans le forum, t'aurais trouver tout seul

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Points : 52
    Points
    52
    Par défaut
    je lai déja fait avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    when (new.annee <2001)
    mais le déclencheur est crée avec une erreur de compilation

    et quand je fait show errors j'ai le message suivant

    symbole "," rencontré a la place d'un des symboles

    *& .....

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    regarde où tu as une virgule et réfléchit à ce qui peut poser problème

  7. #7
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Peut être sur un nombre
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  8. #8
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par orafrance Voir le message
    regarde où tu as une virgule et réfléchit à ce qui peut poser problème
    La voila
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    :new.prime := :new.prime * 0,15244901 ;

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    si avec ça il ne trouve pas

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    Citation Envoyé par orafrance Voir le message
    en AFTER INSERT c'est trop tard pour modifier le :new... faut être en BEFORE INSERT
    A ma connaissance, que l'on soit en BEFORE ou en AFTER n'influe pas sur la possibilité d'utiliser le :NEW
    Ce qu'il faut savoir par contre, c'est que le :NEW n'est disponible que pour les ordres INSERT et UPDATE, alors que le :OLD ne l'est que pour les ordres DELETE et UPDATE.
    L'INSERT n'a qu'une nouvelle valeur.
    Le DELETE n'a qu'une ancienne valeur.
    Seul le UPDATE a une ancienne et une nouvelle valeur.
    Mais pour chacun des 3 ordres SQL, la ou les variables disponibles le sont que l'on soit en BEFORE ou en AFTER.

    Par ailleurs, je doute un peu (beaucoup même) du fait qu'il soit possible de modifier les variables :OLD et :NEW. Ces sont des données récupérées de l'enregistrement qui peuvent être lues, ce ne sont pas des variables de travail.
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Citation Envoyé par dgi77 Voir le message
    A ma connaissance, que l'on soit en BEFORE ou en AFTER n'influe pas sur la possibilité d'utiliser le :NEW
    tu peux la lire mais pas la modifier en AFTER

  12. #12
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Points : 52
    Points
    52
    Par défaut
    merci a tous pour vos reponses

    j'ai trouvé avec votre aide la soulution et j'ai apré beaucoup de choses

    le probleme réside dans le chiffre : 0,15244901

    il falai remplacé le virgule avec un point

  13. #13
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par k-eisti Voir le message
    merci a tous pour vos reponses

    j'ai trouvé avec votre aide la soulution et j'ai apré beaucoup de choses

    le probleme réside dans le chiffre : 0,15244901

    il falai remplacé le virgule avec un point

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/04/2008, 12h31
  2. [javascript] Problème variable globale !!!!
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/08/2005, 16h41
  3. Réponses: 6
    Dernier message: 08/02/2005, 17h50
  4. [Rave report 5.1.3][delphi 7] Probléme variable PIVar
    Par GILLESKLEIN dans le forum Rave
    Réponses: 2
    Dernier message: 05/02/2005, 15h27
  5. problème variable extern
    Par HeKaz dans le forum C
    Réponses: 14
    Dernier message: 08/01/2003, 01h44

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