为什么种子价值不好?

时间:2013-12-18 06:30:19

标签: sql sql-server-2012

我正在使用SQL Server 2012,并且我有一个类型为bigint的主键列。

有时在新插入时,新主键需要1000或10000的巨大跳跃。

例如:

ID
--
1
2
3
4
5
6
7
8
9
10001
10002

为什么会这样?这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

这是SQL Server 2012的行为。

要解决此问题,您需要确保在序列创建/属性中添加NO CACHE选项,如下所示。

 create sequence Sequence1
    as int
    start with 1
    increment by 1
    no cache
go
create table Table1
    (
    id int primary key,
    col1 varchar(50)
    )
go
create trigger Trigger1
    on Table1
    instead of insert
as
insert  Table1
        (ID, col1)
select  next value for Sequence1
,       col1
from    inserted
go
insert Table1 (col1) values ('row1');
insert Table1 (col1) values ('row2');
insert Table1 (col1) values ('row3');

select  * 
from    Table1

希望这会有所帮助..