Bonjour à tous et à toutes;

Je viens enfin de faire fonctionner mes triggers DELETE, UPDATE et INSERT mais j'ai un souci lors de la suppression multi-lignes du type : DELETE FROM maTable.

J'explique :
J'ai deux tables qui sont ECRITURE et CONSOLIDATION; a chaque ajout, suppression ou modification d'une ligne dans la table ECRITURE je veux que la table CONSOLIDATION soit mise à jour. Ecriture par écriture cela fonctionne parfaitement bien pour les INSERT, les UPDATE et les DELETE (trois triggers); mais lorsque j'effectue des modifications multiples dans la table ECRITURE, la table CONSOLIDATION se met partiellement à jour (exemple de la requête : DELETE FROM ECRITURE)

Voici le code du trigger (traitement après suppression) :
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
ALTER TRIGGER [dbo].[MAJ_DELETE] 
   ON  [dbo].[ECRITURE]
   AFTER DELETE
 
AS 
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
 
    -- Insert statements for trigger here
 
	DECLARE @Annee int;
	DECLARE @Mois int;
 
	--Récupération des valeurs ANNEE et MOIS de la ligne d'ECRITURE supprimée
 
	SELECT @Annee = E.ANNEE , @mois = E.MOIS FROM deleted E
 
	--Mise à jour des montants de CREDIT et de DEBIT de la table CONSOLIDATION
 
	EXECUTE dbo.CONSOLIDATION_MAJ @Mois, @Annee
 
END
Voici le code de la procédure stockée CONSOLIDATION_MAJ :

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
 
ALTER PROCEDURE [dbo].[CONSOLIDATION_MAJ]
	-- Add the parameters for the stored procedure here
	@Mois int,
	@Annee int
 
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
 
    -- Insert statements for procedure here
	UPDATE CONSOLIDATION SET 
		CREDIT = (SELECT COALESCE(SUM(COALESCE(E.CREDIT, 0)),0) FROM ECRITURE AS E WHERE (E.ANNEE = @Annee and E.MOIS = @mois)),
		DEBIT = (SELECT COALESCE(SUM(COALESCE(E.DEBIT, 0)),0) FROM ECRITURE AS E WHERE (E.ANNEE = @Annee and E.MOIS = @mois))  
	WHERE (CONSOLIDATION.ANNEE = @Annee and CONSOLIDATION.MOIS = @mois)
 
END
Si quelqu'un peut m'expliquer le problème ça serait super
Par avance merci;
Alex01