Bonjour,

J'ai un probleme avec un TRIGGER sur SQL 2000.

J'ai 2 tables (Tarif_FR et Tarif_BE)

J'ai un Trigger sur Tarif_FR qui met a jour la colonne "PVHP_N_Previvionnel" de ma table "Tarif_BE", dès que la colonne "PVHP_N" de la table "Tarif-FR" est modifié.
Voir TRIGGER 1 ci -dessous

J'ai un également un Trigger sur ma table Tarif_BE qui lui met a jour toute les colonnes de la tables "Tarif_BE", dès que la colonne "PVHP_N_Previsionnel" de ma table "Tarif_BE" est modifiée.
Voir TRIGGER 2 ci dessous

Donc le Trigger 1 fonctionne très bien, par contre le trigger 2 je suis obligé de le lancé au moins 10 fois pour que toutes mes colonnes de toute ma table "Tarif_BE" soit mis a jour.

Pouvez vous me dire d'où peux venir mon problème ?

Merci d'avance


TRIGGER 1 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
ALTER TRIGGER UPDATE_TABLE ON Tarif_FR_09
FOR UPDATE
AS
IF UPDATE (PVHP_N)
UPDATE Tarif_BE_09
SET Tarif_BE_09.Reference = Tarif_FR_09.Reference, 
Tarif_BE_09.PVHP_N_Previsionnel = Tarif_FR_09.PVHP_N 
FROM Tarif_FR_09
INNER JOIN Tarif_BE_09 ON Tarif_BE_09.Reference = Tarif_FR_09.Reference


TRIGGER 2 :

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
ALTER TRIGGER UPDATE_CALCUL_TABLE_BE ON Tarif_BE_09
AFTER UPDATE
AS
IF UPDATE (PVHP_N_Previsionnel)
declare @Num as numeric
declare @TxTrans as numeric(32, 3)
SELECT @TxTrans = Belgique from dbo.Taux_Transport_09
UPDATE Tarif_BE_09
set Cout_Std_N = ( Cout_Achat_N + Amort_N + R ), 
Cout_Cat_N = ( Cout_Std_N + Mkit ), 
PVHT_N_Previsionnel = ( PVHP_N_Previsionnel / @TxTrans ), 
PVTTC_N_Previsionnel = 
    CASE TVA
    WHEN '21' THEN round((PVHT_N_Previsionnel * 1.21), 2)
    WHEN '6' THEN round((PVHT_N_Previsionnel * 1.06), 2)
    END, 
 
PVTTC_N = 
    CASE TTC_Manuel
    WHEN '0' THEN PVTTC_N_Previsionnel
    WHEN '1' THEN PVTTC_N
    END,
 
PVHT_N = 
    CASE TVA
    WHEN '21.00' THEN (PVTTC_N / 1.21)
    WHEN '6.00' THEN (PVTTC_N / 1.06)
    END, 
PVHP_N = ( PVHT_N * @TxTrans ), 
K_Hors_Port_N = 
    CASE Cout_Cat_N
    WHEN '0' THEN '0'
    --ELSE round ((PVHP_N / @Num), 2)
    ELSE round ((PVHP_N / Cout_Cat_N), 2)
    END, 
@Num = (Cout_Std_N - R), 
K_Hors_Tout_N = 
    CASE @Num
    WHEN '0' THEN '0'
    --ELSE round ((PVHP_N / @Num), 2)
    ELSE round ((PVHP_N / (Cout_Std_N - R)), 2)
    END, 
K_Port_Compris_N = 
    CASE Cout_Cat_N
    WHEN '0' THEN '0'
    ELSE round ((PVHT_N / Cout_Cat_N), 2)
    END, 
Pourc_Evol = 
    CASE Cout_Cat_N_1
    WHEN '0' THEN '0'
    ELSE round (((Cout_Cat_N - Cout_Cat_N_1) / Cout_Cat_N_1) * 100, 2)
    END, 
Pourc_Diff_Reel =
    CASE PVTTC_N_1
    WHEN '0' THEN '0'
    ELSE (((PVTTC_N - PVTTC_N_1) / PVTTC_N_1) * 100)
    END, 
Pourc_Diff_Previsionnel = 
    CASE PVTTC_N_1
    WHEN '0' THEN '0'
    ELSE(((PVTTC_N_Previsionnel - PVTTC_N_1) / PVTTC_N_1) * 100)
    END
 
FROM Tarif_BE_09