[SQL SERVER 2000] - Problème de verrous
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 :
Code:
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 |
Merci.
Bonne journée.
Frédéric.