Bonjour,
J'ai un certain problème, depuis un petit moment, dont je ne trouve pas la solution :
J'ai plusieurs ordinateurs qui doivent effectuer un traitement différent.
Le problème vient du fait que, parfois, le même traitement est effectué par deux (ou plus) ordinateurs différents.
Je pensais que le simple fait de mettre un BEGIN TRANSACTION, au début de ma procédure stockée, me permettrait de bloquer l'accès à la table où je vais chercher le traitement à effectuer mais visiblement non...
Voici le code de ma procédure stockée :
Merci.
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 CREATE PROCEDURE dbo.GetTraitementToDo @IdOrdinateur INT AS DECLARE @IdTraitement INT BEGIN TRANSACTION SET @IdTraitement = (SELECT TOP 1 IdTraitement FROM Traitements WHERE State = 0 ORDER BY IdTraitement ASC) UPDATE Traitements SET IdOrdinateur = @IdOrdinateur, State = 1 WHERE IdTraitement = @IdTraitement SELECT * FROM Traitements WHERE IdTraitement = @IdTraitement COMMIT TRANSACTION GO
Bonne journée.
Frédéric.
Partager