自动编号不是按顺序生成的

时间:2013-03-09 09:36:41

标签: c# sql sql-server sql-server-2008

我的一个表包含一个autonumber feild ShiftPk,它用作该表的主键,但当我将值插入记录时,生成的主键不是顺序的

我知道自动编号不需要总是连续的,但是我的所有其他自动编号都是按顺序工作请在下面找到我的脚本并提出建议,如果有任何问题来自我的部分

   ****** Object:  Table [dbo].[ShiftMasterNew_tbl]    Script Date: 03/09/2013 13:21:13 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[ShiftMasterNew_tbl](
    [ShiftPK] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
    [ShiftName] [varchar](50) NOT NULL,
    [Duration] [numeric](18, 0) NULL,
 CONSTRAINT [PK_ShiftMasterNew_tbl] PRIMARY KEY CLUSTERED 
(
    [ShiftPK] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY],
 CONSTRAINT [IX_ShiftMasterNew_tbl] UNIQUE NONCLUSTERED 
(
    [ShiftName] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

是什么让这个tabel autonumber与其他人不同

2 个答案:

答案 0 :(得分:0)

如何将数据插入表中?我怀疑你的身份栏中是否有空白,例如它如下所示:

1
2
5
6
8
9
10
15

...这可能是一种症状,当数据插入表格时,某些东西会误入歧途。您是否可以在OP上添加有关更新流程的更多信息?

正如评论所说 - 它肯定会 SEQUENTIAL ,但可能存在差距。如果您需要向自己证明它们是顺序的,您可以添加DateTime字段,例如“WhenUpdated”吗?

答案 1 :(得分:0)

我想我发现了问题..任何失败尝试插入也消耗了标识符

例如,如果我插入 1 2 3 然后插入失败

然后如果我插入下一个标识符是

5