Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server - Como bloquear uma tabela até que um procedimento armazenado seja concluído


Eu mesmo precisava dessa resposta e, a partir do link fornecido por David Moye, decidi sobre isso e pensei que poderia ser útil para outras pessoas com a mesma pergunta:
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