Bonjour à tous,

Je suis confronté à une problématique consistant à mettre en place un trigger sur une table (AFTER INSERT / AFTER UPDATE) destiné à affecter une valeur issue d'un compteur pour chacun des enregistrements . Et malheureusement, je ne peux pas utiliser AUTO_INCREMENT car je n'ai pas la possibilité de modifier la définition structurelle des colonnes de la table.

Les informations des compteurs sont stockées dans une table très simple à trois colonnes (code compteur / valeur du compteur / incrément).

Jusqu'à présent, j'avais écrit quelque chose ressemblant à cela :
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
 
DECLARE @ENTRYNO integer;
SELECT @ENTRYNO = E_LIBREMONTANT2 FROM inserted;
IF (@ENTRYNO = 0)
BEGIN
	IF (NOT EXISTS(SELECT 1 FROM DESEQUENCES WHERE DSQ_CODE = 'WJT~ZENTRYNO')) 
	BEGIN
		INSERT INTO DESEQUENCES(DSQ_CODE, DSQ_VALEUR, DSQ_INCREMENT) VALUES('WJT~ZENTRYNO', 0, 1)
	END
 
	UPDATE DESEQUENCES SET DSQ_VALEUR = DSQ_VALEUR + DSQ_INCREMENT WHERE DSQ_CODE = 'WJT~ZENTRYNO'
	SELECT @ENTRYNO = DSQ_VALEUR FROM DESEQUENCES WHERE DSQ_CODE = 'WJT~ZENTRYNO'
 
	UPDATE ECRITURE SET E_LIBREMONTANT2 = @ENTRYNO FROM ECRITURE INNER JOIN inserted Ecr ON Ecr.E_cleunique = ECRITURE.E_cleunique 
END
Mais je viens d'apprendre que la table inserted peut comporter plusieurs enregistrements (triggers ensemblistes).
Et là, je comprends rapidement que mon code SQL ne peut pas convenir et je ne vois pas trop comment faire...
Auriez-vous un conseil à me donner ?

Merci.