1 pièce(s) jointe(s)
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:
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