J'ai un accès concurrentiel dans un système multi-utilisateur et une procédure stockée comme indiqué ci-dessous:tsql: procédure stockée et tolet
CREATE PROCEDURE dbo.GetWorkitemID
AS
DECLARE @workitem int;
UPDATE workqueue
SET status = 'InProcess', @workitem = workitemid
WHERE workitemid = (SELECT TOP 1 workitemid
FROM workqueue WITH (ROWLOCK,UPDLOCK,READPAST)
WHERE status = 'New' ORDER BY workitemid)
SELECT @workitem
GO
Il met à jour un statut d'enregistrement unique de « Nouveau » pour « InProcess » et retourne record de ID.
Les questions sont les suivantes: Dois-je utiliser cette procédure stockée dans une étendue de transaction pour activer ROWLOCK, UPDLOCK, etc.? Est-ce nécessaire? Et la seconde: est-ce vraiment thread safe et garantit l'unicité?
votre réponse d'origine par le lien? – johnny
@Johnny: oui, mais j'ai ajouté des choses en fonction de vos autres questions – gbn