Bonjour,
J'ai pu trouver plusieurs post de ce type mais cela ne correspond pas exactement à mon soucis.
Voici, lorsqu'on effectue un update ou insert de plusieurs lignes, j'aimerais que mon trigger effectue son code sur tous les enregistrement de la table inserted et pas seulement sur la dernière ligne.
Je m'explique,
Imaginons que j'ai la table
J'ai l'update suivant :History
Trans_ID | Bit | Type | Zone | TKEY
1 0 P NC 57
2 0 P HD 89
3 1 H PI 12
4 0 P NC 14
Nous aurons donc 1 seul evenement update avec 3 lignes dans la table inserted.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 update History set Bit = 1 where Type = 'P'
Mon trigger lui vérifie la zone et si elle est par exemple NC il effectue un update dans une autre table.
Ce qui donne ceci :
Le soucis est qu'il ne met à jour que la dernière ligne de ma table inserted
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 ALTER TRIGGER [dbo].[Trigg] ON [dbo].[History] AFTER INSERT,UPDATE AS Declare @zone varchar(2), @TKEY varchar(2) BEGIN SET NOCOUNT ON; select @zone = i.zone, @TKEY= i.TKEY from inserted as i If @zone = 'NC' BEGIN update Table2 set old = 1, old_Start = getdate() where Table2.TKEY = @TKEY END END
Je pensais passer par un cluster mais je sais que ce système est très lourd et utilisable en dernier recours je me tourne donc vers vous en espérant que quelqu'un aurait-il une idée ?
Merci d'avance
Partager