向表中插入数据时出现奇怪错误。
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]
结束