Problème sur trigger insert
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 .... :oops::oops:
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. :oops:
Code:
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 |
Donc le trigger se lance mais l'insertion ne se fait pas.... Est ce du au curseur ?
D'avance merci de m'eclairer.
Amicalement.
Bob