Bonsoir / bonjour à tous
J'ai un petit soucis avec les déclencheurs que je ne comprends pas très bien.
Pour mon cours SGBD, je dois gérer des nageurs qui sont placé dans des catégories selon leurs ages.
J'ai trois tables :
- Nageurs (Nrligue, Nom, AnneeNaiss, Categorie)
- Categories(Categorie, agemin, agemax)
- Infogeneral (anneeencours)
J'aimerai que quand on modifie l'année en cours dans la table Infogeneral, que les catégories des nageurs soient automatique mis à jour. j'ai mis un déclencheur dans la table Infogeneral
Je n'arrive pas à comprendre comment je pourrais faire ça. J'ai essayé avec un curseur (je ne sais pas trop à quoi ça sert mais je me dis que ca peut m'aider à sélectionner un a un les nageurs) et voici le code.
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 create or replace TRIGGER TRGCATEGORIE AFTER UPDATE ON INFOGENERALES declare annee NUMBER(4,0); UneCategorie char(2); CURSOR CurNageur is Select * from nageurs; UnNageur nageurs%rowtype; BEGIN Select anneeencours into annee from infogenerales; open CurNageur; FETCH CurNageur INTO unnageur; while CurNageur%Found LOOP SELECT categories.categorie into unecategorie from categories, nageurs where nom = unnageur.nom and agemin <= (annee - UnNageur.anneenaiss) and agemax >= (annee - UnNageur.anneenaiss); update nageurs set categorie = unecategorie where nrligue like unnageur.nrligue; FETCH CurNageur into unnageur; end loop; close CurNageur; EXCEPTION WHEN INVALID_CURSOR THEN DBMS_OUTPUT.PUT_LINE('Erreur Curseur CurEmp'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLERRM); END;
Partager