我有一个场景,我需要从数据库表中检索一个 INT,将其递增 1,然后返回旧值。我需要确保如果立即再次调用存储过程,则返回的值 (NextBookingId) 与第一次调用存储过程返回的值不同。
我一直在使用下面的代码并假设它正在工作,但我认为它直到现在还没有经过适当的测试并且它似乎没有工作,因为存储过程的 2 个单独和立即调用似乎返回相同的值.
DECLARE @NextBookingId INT
UPDATE Company WITH (ROWLOCK)
SET @NextBookingId = (NextBookingId),
NextBookingId = (NextBookingId + 1)
WHERE CompanyId = @CompanyId
SELECT
CompanyId
, @NextBookingId AS NextBookingId
FROM Company
WHERE CompanyId = @CompanyId
这应该包含在交易中吗?我在 CompanyId 主键上有一个聚集索引。