标识列未生成正确的ID

Mav*_*ven 0 sql sql-server sql-server-2012

我有一张桌子:

CREATE TABLE [dorkOrder] ( 
    [doId] int identity(1,1)  NOT NULL,
    [shId] int NOT NULL,
    [mopId] int NOT NULL,
    [dorkOrderNo] varchar(20) NULL,
    [doDate] date NULL
);
Run Code Online (Sandbox Code Playgroud)

现在,当我向其中插入数据而不doId是以这种方式1,2,3,4,5,6,7生成时,它将以下面的奇怪方式生成它:

1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
2002
2003
2004
2005
2006
2007
2008
2013
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题.

Aar*_*and 5

这是SQL Server 2012中已知问题.但即使没有这个错误(可能会在某一天修复,但可能没有),您应该期望您的IDENTITY列可能存在空白.这些可能由于各种原因而发生,包括删除和回滚.

如果你想实现一个没有间隙的顺序列,那么就停止使用IDENTITY,在插入新行的基础上构建健壮的可序列化进程,并拒绝删除/截断该表上的每个人.

否则,由于微软表示他们绝对无意提供"无间隙顺序"功能,因此要学会忍受差距.


归档时间:

查看次数:

467 次

最近记录:

11 年,9 月 前