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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    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
    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
    en AFTER INSERT c'est trop tard pour modifier le :new... faut être en BEFORE INSERT

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    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
    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
    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 confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    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
    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
    regarde où tu as une virgule et réfléchit à ce qui peut poser problème

  7. #7
    Membre émérite
    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
    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.

  8. #8
    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
    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

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    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

  10. #10
    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
    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