Pour notre exemple prenons une base de données simplifiée contenant 2 tables.
La première : UTILISATEURS (ID_USER, NOM, PW, ETAT) gère les utilisateurs.
La seconde GROUPES (ID_USER, NOM_GROUP) gère les groupes assignés aux utilisateurs.
Contenu des tables :
Table UTILISATEURS |
ID_USER | NOM | PW | ETAT |
1 | DUBULLOS | xdf5DeP | FATIGUE |
2 | PARABELLUM | FgP45T8 | EN FORME |
3 | PERTEFRAKA | FR8e741 | FATIGUE |
Table GROUPES |
ID_USER | NOM_GROUP |
1 | ADMIN |
1 | CHEF |
2 | CONSEILLER |
2 | CHEF |
3 | POMPIER |
En claire ;-)
- DUBULLOS (ID_USER=1, ETAT=FATIGUE) appartient aux groupes ADMIN et CHEF
- PARABELLUM (ID_USER=2, ETAT= EN FORME) appartient aux groupes CHEF et CONSEILLER
- PERTEFRAKA (ID_USER=3, ETAT=FATIGUE) appartient au groupe POMPIER
Je veux que tous utilisateurs dont lETAT est "FATIGUE" appartiennent à un nouveau groupe "BESOIN_VACANCES". Pour ce faire je vais utiliser un CURSEUR qui récupérera tous les ID_USER des utilisateurs (table UTILISATEURS) dont le champ ETAT = "FATIGUE" et pour chacun de ces ID_USER on ajoutera une ligne dans la table GROUPES avec pour NOM_GROUP la valeur "BESOIN_VACANCES".
- DECLARE
@CPT_ID as int - DECLARE
MyCursor CURSOR -
- FOR
SELECT ID_USER from UTILISATEURS
WHERE ETAT='FATIGUE' OPEN MyCursor -
- FETCH
MyCursor INTO @CPT_ID - WHILE
@@fetch_Status = 0 - BEGIN
print @CPT_ID + ' - ' INSERT GROUPES (CPT_ID,NOM_GROUP)
VALUES(@CPT_ID, 'BESOIN_VACANCES') FETCH MyCursor INTO @CPT_ID - END
- CLOSE
myCursor - DEALLOCATE
myCursor - Print
'----------------- Terminé ------------------------'
Voici le nouveau contenu de la table GROUPES
Table GROUPES |
ID_USER | NOM_GROUP |
1 | ADMIN |
1 | CHEF |
2 | CONSEILLER |
2 | CHEF |
3 | POMPIER |
1 | BESOIN_VACANCES |
3 | BESOIN_VACANCES |