我有一个场景,我需要从数据库表中检索INT,将其递增1然后返回旧值。我需要确保如果立即再次调用存储过程,则返回的值(NextBookingId)与第一次调用存储的produredure返回的值不同。
我一直在使用下面的代码,并认为它正在运行,但我认为它已经过适当的测试,直到现在它似乎没有工作,因为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主键上有一个聚集索引。