sql 服务器中整数的下一个序列跳跃问题
Next sequence jumping issue in sql server for interger
将数据插入 table 时出现奇怪的错误。
CREATE TABLE [dbo].[Requests](
[RequestID] [int] IDENTITY(1,1) NOT NULL,
[LRequestID] [nvarchar](max) NULL,
)
并且我有一个 sp,它会 return 最后插入的值到这个 table。
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 获取最后插入的记录并将这个值放入 temptable 以访问这个值。令人惊讶的是它正在跳跃价值。
我是按照下面的方式做的。
CREATE TABLE #tmpTableRequests
(
OutputValue VARCHAR(100)
)
INSERT INTO #tmpTableRequests (OutputValue)
declare @requestidjumpissue int
EXEC GetSequenceValue'request'
select @RequestIDForanothertable= OutputValue FROM #tmpTableRequests
print @RequestIDForanothertable
但是这里是跳跃值意味着当我插入临时值时实际插入的值为 10 table 显示为 12。
请指出我做错了什么。
下面是这个案例的解决方案。
序列生成器提供了另一种创建标识列的方法。如果我想获得最后插入的列,我们可以这样做,而且速度非常快。感谢 sql 2008R2。
创建过程 [dbo].[GetSequenceValue]
@name 为 nvarchar(100)
作为
开始
设置无计数;
IF @name=N'Request' SELECT NEXT VALUE FOR [dbo].[RequestNumber] AS [Value]
结束
将数据插入 table 时出现奇怪的错误。
CREATE TABLE [dbo].[Requests](
[RequestID] [int] IDENTITY(1,1) NOT NULL,
[LRequestID] [nvarchar](max) NULL,
)
并且我有一个 sp,它会 return 最后插入的值到这个 table。
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 获取最后插入的记录并将这个值放入 temptable 以访问这个值。令人惊讶的是它正在跳跃价值。
我是按照下面的方式做的。
CREATE TABLE #tmpTableRequests
(
OutputValue VARCHAR(100)
)
INSERT INTO #tmpTableRequests (OutputValue)
declare @requestidjumpissue int
EXEC GetSequenceValue'request'
select @RequestIDForanothertable= OutputValue FROM #tmpTableRequests
print @RequestIDForanothertable
但是这里是跳跃值意味着当我插入临时值时实际插入的值为 10 table 显示为 12。
请指出我做错了什么。
下面是这个案例的解决方案。
序列生成器提供了另一种创建标识列的方法。如果我想获得最后插入的列,我们可以这样做,而且速度非常快。感谢 sql 2008R2。
创建过程 [dbo].[GetSequenceValue]
@name 为 nvarchar(100)
作为
开始
设置无计数;
IF @name=N'Request' SELECT NEXT VALUE FOR [dbo].[RequestNumber] AS [Value]
结束