Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/01/2008, 08h52   #1
Membre à l'essai
 
Inscription : avril 2007
Messages : 175
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 175
Points : 20
Points : 20
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 :
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
k-eisti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 09h21   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
en AFTER INSERT c'est trop tard pour modifier le :new... faut être en BEFORE INSERT
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 09h46   #3
Membre à l'essai
 
Inscription : avril 2007
Messages : 175
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 175
Points : 20
Points : 20
j'ai essayé avec before mais j'ai toujour le même message d'erreur
sur la laigne

Code :
1
2
 
when (:new.annee < 2001)
avec une * au dessous de 2001
k-eisti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 09h51   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Code :
when (new.annee < 2001)
sans :, t'aurais fait une recherche dans le forum, t'aurais trouver tout seul
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 09h59   #5
Membre à l'essai
 
Inscription : avril 2007
Messages : 175
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 175
Points : 20
Points : 20
je lai déja fait avec

Code :
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

*& .....
k-eisti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 10h10   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
regarde où tu as une virgule et réfléchit à ce qui peut poser problème
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 10h39   #7
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Peut être sur un nombre
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 10h42   #8
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 319
Points : 5 837
Points : 5 837
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 :
1
2
:new.prime := :new.prime * 0,15244901 ;
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 10h44   #9
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
si avec ça il ne trouve pas
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 11h04   #10
Membre expérimenté
 
Inscription : juillet 2007
Messages : 495
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2007
Messages : 495
Points : 585
Points : 585
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 !
dgi77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 11h07   #11
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
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
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 12h07   #12
Membre à l'essai
 
Inscription : avril 2007
Messages : 175
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 175
Points : 20
Points : 20
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
k-eisti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 14h10   #13
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 319
Points : 5 837
Points : 5 837
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
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h11.


 
 
 
 
Partenaires

Hébergement Web