SQL Server - comment verrouiller une table jusqu'à la fin d'une procédure stockée
je veux faire ceci:
create procedure A as
lock table a
-- do some stuff unrelated to a to prepare to update a
-- update a
unlock table a
return table b
Est-ce que quelque chose comme ça est possible?
en fin de compte, je veux que mon rapport SQL server reporting services appelle la procédure A, et n'affiche la table a qu'une fois la procédure terminée. (Je ne peux pas changer la procédure A pour retourner le tableau a).
36
demandé sur
Greg
2010-09-08 01:06:24
3 réponses
Besoin de cette réponse moi-même et de l' , a décidé cela et a pensé qu'il pourrait être utile à d'autres avec la même question:
CREATE PROCEDURE ...
AS
BEGIN
BEGIN TRANSACTION
-- lock table "a" till end of transaction
SELECT ...
FROM a
WITH (TABLOCK, HOLDLOCK)
WHERE ...
-- do some other stuff (including inserting/updating table "a")
-- release lock
COMMIT TRANSACTION
END
43
répondu
Graham
2017-05-23 11:47:09
utilisez L'indicateur de verrouillage TABLOCKX pour votre transaction. Voir cet article pour plus d'informations sur le verrouillage.
15
répondu
David Moye
2010-09-07 21:13:00
select top 1 *
from table1
with (tablock, holdlock)
ceci maintiendra le 'verrouillage de table' jusqu'à la fin de votretransaction
.
9
répondu
Xin
2017-05-05 06:56:51