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 :

Exécution d'un trigger qui fonctionne mais..


Sujet :

PL/SQL Oracle

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut Exécution d'un trigger qui fonctionne mais..
    Bonjour,

    J'ai crée un trigger Verif_nb_install qui vérifie que pour une application donnée, le nombre d'installations( qui est = au nombre de collaborateurs qui utilisent cette application) n'est pas > au nombre de licences pour cette application.

    Vous pouvez voir en impression écran les différentes tables concernées avec leurs données.

    Le code du trigger est le 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    CREATE OR REPLACE TRIGGER Verif_nb_install
    	BEFORE INSERT OR UPDATE ON Autoriser 
    	FOR EACH ROW
     
     
    	DECLARE
    		var_nblicences application.nbdelicences%TYPE;
    		var_nbinstalls NUMBER(3);
     
     
     CURSOR CURS_INSTALL  IS SELECT COUNT(C.cId) INTO var_nbinstalls
    		FROM autoriser AU, collaborateur C, profil P, application A
    		WHERE P.pid=C.pId
    		AND AU.aId=A.aID
    		AND AU.pId=P.pId
    		GROUP BY A.nom ;
     
    BEGIN 
     
    SELECT nbdelicences INTO var_nblicences FROM autoriser, application WHERE autoriser.aid=application.aid ;
     
     
    OPEN CURS_INSTALL ;
    LOOP
     
    FETCH CURS_INSTALL INTO var_nbinstalls ;
    EXIT WHEN CURS_INSTALL%NOTFOUND; 
     
    IF (var_nblicences < var_nbinstalls)
    		THEN RAISE_APPLICATION_ERROR(-20000, 'Nombre de licences insuffisant'); 
    	END IF;
     
    END LOOP ;
     
     
    CLOSE CURS_INSTALL;
     
     
    END;

    Le déclencheur est crée sans erreur.
    Je l'ai alors testé en associant 3 collaborateurs au profil 2 et en associant le profil PID=2 à l'application 2 qui a 2 licences alors que ce profil est lié à 3 collaborateurs.
    J'ai bien un message d'erreur que vous pouvez voir en impression écran ci-jointe qui apparaît mais qui n'est pas celui que j'ai mis dans le code du trigger Verif_nb_install .


    Pouvez-vous m'expliquer pourquoi.

    Je vous en remercie beaucoup.

    Voici quelques informations complémentaires :
    -A un profil correspond un ou plusieurs collaborateurs,
    -La table autoriser est une table de jointure : à une application qui possède un nombre de licences précis, correspond un ou plusieurs profils qui chacun correspond à un ou plusieurs collaborateurs.


    Cordialement.
    new_wave
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/04/2009, 11h29
  2. Réponses: 1
    Dernier message: 03/08/2007, 10h09
  3. Réponses: 3
    Dernier message: 20/03/2007, 19h54
  4. [FLASH 8] : FLA qui fonctionne mais pas le SWF
    Par xtaze dans le forum Flash
    Réponses: 9
    Dernier message: 24/10/2006, 09h14
  5. Trigger qui rollback, mais pas complètement
    Par Monstros Velu dans le forum Développement
    Réponses: 3
    Dernier message: 20/04/2006, 10h18

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