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

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
J'ai l'update suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
update History
set Bit = 1
where Type = 'P'
Nous aurons donc 1 seul evenement update avec 3 lignes dans la table inserted.

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 :

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
Le soucis est qu'il ne met à jour que la dernière ligne de ma table inserted
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