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
Partager