Bonjour à tous,
Je suis sur sql-Server depuis quelques mois je suis encore en mode découverte, je me suis mis au trigger et j'avoue avoir beaucoup de mal ....
Tout d'abord j'ai parcouru le forum et rencontré pas mal ce problème. Mais je n'arrive pas à mettre en place la solution.
Le voici :
- j'ai une table A qui comprend des articles. Les utilisateurs peuvent voter pour ces articles. Dans ce cas un inert dans la table B valide le vote.
- A l'insertion du vote, je souhaite utiliser un declencheur qui va modifier un champ classement dans tous les enregistrements de la table A en fonction du nombre de vote.
Voici mon code, merci d'être indulgent.
Donc le trigger se lance mais l'insertion ne se fait pas.... Est ce du au curseur ?
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 USE [DB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER TRIGGER [dbo].[tr_vote] ON [dbo].[VOTE] AFTER INSERT as DECLARE @i int, @VOTE int, @ID_ARTICLE int; BEGIN set @i = 1 DECLARE MyCursor CURSOR FOR select w.ID_ARTICLE,(select count(*) from VOTE where RESULTAT_VOTE=1 and ID_ARTICLE=w.ID_ARTICLE) as nb_vote from ARTICLE w left join VOTE v on w.ID_ARTICLE=v.ID_ARTICLE order by nb_vote desc ,w.ID_ARTICLE desc open MyCursor fetch MyCursor into @ID_ARTICLE, @VOTE WHILE @@FETCH_STATUS = 0 begin update ARTICLE set CLASSEMENT= @i where ID_ARTICLE=@ID_ARTICLE SET @i = @i + 1 fetch MyCursor into @ID_ARTICLE, @VOTE end close MyCursor DEALLOCATE MyCursor END
D'avance merci de m'eclairer.
Amicalement.
Bob
Partager