|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : octobre 2006 Messages : 115 ![]() |
bonjour je veux faire un trigger qui va compter le nombre de employe a l'aide SerNo(service numero)
J'ai deux table suivant: Employe(EmpNo,nom,prenom, chef, salaire, commission,SerNo) Service(SerNo,Nom,Lieu) Je rajoute un colone dans Service qui s'appelle NbEmploye Comment je peut faire un trigger qui va compter le nombre employe et affecter la valeur dans la colone NbEmploye. |
|
|
00
|
|
|
#2 |
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 181 ![]() |
Bonsoir,
Tu veux quoi au juste compter ou numéroter ?
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!" |
|
|
00
|
|
|
#3 | ||
|
Membre à l'essai
![]() Inscription : octobre 2006 Messages : 115 ![]() |
Code :
|
||
|
|
00
|
|
|
#4 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
pourquoi pas simplement :
Code :
|
||
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : octobre 2006 Messages : 115 ![]() |
Je veux faire un trigger pour disposer de l'information NbEmploye dans la table SERVICE, Pour cela ,j'ai ajouter une colone NbEmploye avec pour valeur par défaut 0,ensuite ,je veux calculer le nombre de NbEmloye.
Donc je fais une vue et dans cette je fais un trigger. les deux tables sont suivant Employe(EmpNo,Nom,Prenom, Fonction,Chef,DateEmbauche,Salaire,Commission,SerNo) Service(SerNo,Nom,Lieu) normalement je peux calculer le nombre de employe à l'aide de SerNo? |
|
|
00
|
|
|
#6 | ||
|
Membre à l'essai
![]() Inscription : octobre 2006 Messages : 115 ![]() |
Code :
|
||
|
|
00
|
|
|
#7 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Mais quel est le role de la vue ? Pourquoi ne pas faire un UPDATE tout simplement ?
|
|
|
00
|
|
|
#8 | |||
|
Membre Expert
![]() Philippe CHIRCOPChef de projet Inscription : juin 2007 Messages : 1 109 ![]() |
Citation:
Code :
__________________
Garuda गरूड Brahmâ la Guerre et Vishnu la Paix Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010 |
|||
|
|
00
|
|
|
#9 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
dans ce cas autant simplifier :
Code :
|
||
|
|
00
|
|
|
#10 |
|
Membre à l'essai
![]() Inscription : octobre 2006 Messages : 115 ![]() |
Mais je dois réaliser avec trigger pas faire une vue,c'est pour ça,je ne sais pas comment faire?
Mon but est un trigger qui va réaliser calculer le nombre de employer dans la vue et après quand je fais select * from service,je peux voir la colone NbEmploye va changer de 0 à 2 par exemple,par défaut ,la colone NbEmploye est 0,je trouve sur le tutoriel sql,il a dit qu'il faut faire une vue avec un trigger,je le fais presque pareil,mais il marche pas? |
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
mais le trigger se déclenche quand ?
|
|
|
00
|
|
|
#12 |
|
Membre à l'essai
![]() Inscription : octobre 2006 Messages : 115 ![]() |
j'ai déjà les données dans la table employe avec les service numéros,je veux savoir combien de employe pour un meme service par exemple,
le serno est 20 dans la table employe,il y 2 serno 20,je calcule 2 service numero est 20 et je veux affecter à la colone nbemploye est 2. |
|
|
00
|
|
|
#13 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
J'ai bien compris mais quand veux tu que le trigger se déclenche ? Quand tu ajoutes un employé ou quand tu ajoutes un service ? et la colonne Nbemploye doit être dans une vue ou dans la table service ?
|
|
|
00
|
|
|
#14 | ||||
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 8 ![]() |
Tu as deux tables
Employe(EmpNo,nom,prenom, chef, salaire, commission,SerNo) Service(SerNo,Nom,Lieu,NbEmploye) Tu souhaites renseigner le champ NbEmploye de Service avec le nombre d'employé avec le même SerNo Le trigger doit se déclencher sur les modifications de la table Employe Dans le cas d'un Update : il faut gérer le cas d'un changement de SerNo Code :
Code :
UPDATE Service SET NbEmploye = NbEmploye + 1 WHERE SerNo = :NEW.Serno Code :
UPDATE Service SET NbEmploye = NbEmploye - 1 WHERE SerNo = :OLD.Serno Maintenant il faut initialiser cette colonne NbEmploye Code :
UPDATE Service SET NbEmploye = (SELECT count(1) FROM Employe WHERE Employe.SerNo = Service.SerNo) Ce qui manque...peut être car je ne connaît pas les fonctionnalités de ton application. Ne pas oublier le cas d'insertion d'un employe avec un SerNo inexistant Dans le trigger , il faut tester si SQL%rowcount > 0 alors l'update a fonctionné sinon créer la ligne Pour l'initialisation : Code :
|
||||
|
|
00
|
|
|
#15 |
|
Membre à l'essai
![]() Inscription : octobre 2006 Messages : 115 ![]() |
Merci
|
|
|
00
|
|
|
#16 | ||||||||
|
Membre à l'essai
![]() Inscription : octobre 2006 Messages : 115 ![]() |
Code :
Code :
Selon les proposition: Code :
Code :
|
||||||||
|
|
00
|
|
|
#17 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
et pourquoi tu recrées une discussion ?
|
|
|
00
|
|
|
#18 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
visiblement, tu n'as pas compris le role du trigger. Un trigger se déclenche à chaque ligne comme tu l'as vu. Donc tu dois d'abord faire un update de ta colonne pour remettre à jour le nombre d'employé sur toute la table et ensuite, créée ton trigger qui se chargement de maintenir la colonne à jour.
|
|
|
00
|
|
|
#19 |
|
Membre à l'essai
![]() Inscription : octobre 2006 Messages : 115 ![]() |
Oui,je fais une vue pour mise à jour la colone nbemploye et ensuite faire un trigger qui va insert la nouvelle donnée.
Merci |
|
|
00
|
|
|
#20 |
|
Membre à l'essai
![]() Inscription : octobre 2006 Messages : 115 ![]() |
Je veux faire un trigger ou procedure pour compter le nombre de transaction,mais je trouve mon schema y des problemes,je ne sais pas comment corriger?S'il est correct,je peux faire un trigger pour compter le nombre de transaction,comme chaque fois une insertion des données,il va incrementer dans l'attribut NombreTransaction.
Le même souci pour noteevaluation,je veux faire un PL/SQL pour calculer le note de evaluation pour la parite de acheteur et vendeur,et ensuite je vais mettre à jour sur evaluationutilisateur dans la table gestiondesutilisateur,est-ce que je dois faire deux attriuts dans la table gestiondesutilisateur et renommer comme evaluation acheteur et evaluation vendeur ou je laisse evaluationutilisateur comme ça? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com