[Oracle 9i]
Bonjour,
Voici les ordres et les libellés de la table QUESTIONS:
1 A
2 B
3 C
4 D
5 E
6 F
7 G
8 H
9 I
Je désir mettre en place une fonctionnalité permettant de déplacer un bloque de question. C'est à dire que l'utilisateur indique la borne de début, la borne de fin et la question précédente.
Par exemple, pour les paramètres suivants:
Borne de début: E
Borne de fin : G
Question précédente : B
On doit obtenir le résultat suivant:
1 A
2 B
3 E
4 F
5 G
6 C
7 D
8 H
9 I
Je suis parti en me disant que je devrai faire la mise à jour des ordres en 2 temps:
1. Mise à jour des ordres des questions qui se touvent entre la question précédente et la borne de début:
2. Mise à jour des ordres des questions qui se trouvent dans le bloque:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 UPDATE QUESTIONS SET ordre = ordre + vl_blocksize WHERE (ordre > vl_ordrequestprec) AND (ordre < vl_ordrebornedeb);
Remarques:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 UPDATE QUESTIONS SET ordre = ordre + vl_intervalsize WHERE (ordre >= vl_ordrebornedeb) AND (ordre <= vl_ordrebornefin);
Cette méthode ne fonctionne pas car une fois mon permier update executé, j'ai plusieurs fois le même ordre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 /* vl_blocksize: Nb d'éléments qui se trouvent dans le blque de question à déplacer (dans l'ex. 3). vl_ordrequestprec: Ordre de la question précédente (dans l'ex. 2). vl_ordrebornedeb : Ordre de 1ere question du bloque (dans l'ex 5). vl_ordrebornefin : Ordre de dernière question du bloque (dans l'ex 7). */
1 A
2 B
6 C
7 D
5 E
6 F
7 G
8 H
9 I
Ensuite, dans mon exemple, mon deuxième update met également à jour les ordres des questions C et D et ce n'est pas ce qui est voulu! bref, pour notre exemple, nous arrivons au resultat final suivant:
1 A
2 B
3 E
4 C
4 F
5 D
5 G
8 H
9 I
Zut!
Est-ce que quelqu'un peut me dire comment éviter que les enregistrement mis à jour lors du 1er update ne soient pas mis à jour dans le 2ème?
Moi je verrai éventuellement l'ajout d'une colonne "jeton" dans ma table QUESTIONS. Lors du 1er update je metterai le jeton à "vrai" et dans le 2ème, je ne metterai pas à jour les enregistrements dont le jeton est à "vrai".
Voyez-vous une autre solution?
Merci du coup de main.
Partager