1

我有一个场景,我需要从数据库表中检索一个 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 主键上有一个聚集索引。

4

0 回答 0