Sql server 2008 sql server for interger中的下一个序列跳转问题
将数据插入表时出现奇怪错误Sql server 2008 sql server for interger中的下一个序列跳转问题,sql-server-2008,sql-server-2008-r2,sql-server-2012,Sql Server 2008,Sql Server 2008 R2,Sql Server 2012,将数据插入表时出现奇怪错误 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
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
请说明我在这里做错了什么。下面是这个案例的解决方案 Sequence Generator提供了另一种创建标识列的方法。如果我想得到最后一个插入的Column,我们可以这样做,而且速度更快。多亏了SQL2008R2。 创建过程[dbo]。[GetSequenceValue] @名称为nvarchar100 像 开始 不计数
IF @name=N'Request' SELECT NEXT VALUE FOR [dbo].[RequestNumber] AS [Value]
结束我不知道你在这里想干什么。你似乎混淆了序列和标识栏——它们是不同的东西,而且序列在2008年的产品线中根本不存在。但也不清楚您想要达到什么目标,或者您的实际问题是什么。@Damien_不相信者:我正在使用2008 R2,我的意图是在插入大量数据时,我正在编写大量的标识语句来获取最后插入的值,发现sql server中有可用的序列来获取最后插入的行,我之所以使用它,是因为我使用了scope_标识;它对我来说工作得很好,但是从C开发人员中的应用程序genarating sequencer到genarate新id。当我从数据库提供数据时,如果他们使用应用程序id,则genaration过程将有所不同,因此尝试同步数据库代码和开发代码