interger的sql server中的下一个序列跳跃问题



向表中插入数据时出现奇怪错误。

CREATE TABLE [dbo].[Requests](
    [RequestID] [int] IDENTITY(1,1) NOT NULL,
    [LRequestID] [nvarchar](max) NULL,
)

我有一个sp,它将返回这个表中最后插入的值。

    CREATE PROCEDURE [dbo].[GetSequenceValue]   
    @name as nvarchar(100)  
AS
BEGIN   
    SET NOCOUNT ON;
    IF @name=N'Request' SELECT NEXT VALUE FOR [dbo].[RequestNumber] AS [Value] 
END

现在我使用这个sp来获取最后插入的记录,并将这个值放入临时表中以访问这个值。令人惊讶的是,它正在跳值。

我正在按以下方式做。

   CREATE TABLE #tmpTableRequests
    (
        OutputValue VARCHAR(100)
    )
    INSERT INTO #tmpTableRequests (OutputValue)   
    declare @requestidjumpissue int
    EXEC GetSequenceValue'request'
    select @RequestIDForanothertable= OutputValue FROM #tmpTableRequests
        print @RequestIDForanothertable

但这里它是跳跃值意味着如果实际插入的值是10,当我插入到临时表中时,它显示为12。

请说明我在这里做错了什么。

下面是这个案例的解决方案。

序列生成器正在提供另一种方法来创建标识柱。如果我想得到最后一个插入的柱,我们可以这样做,而且速度更快。THanks to sql 2008R2。创建过程[dbo]。[GetSequenceValue]
@名称为nvarchar(100)
作为开始
设置NOCOUNT;

IF @name=N'Request' SELECT NEXT VALUE FOR [dbo].[RequestNumber] AS [Value] 

结束

最新更新