2009-12-14 90 views
1

我有一个下表有时身份不工作

CREATE TABLE [dbo].[test_table] 
(
[ShoppingCartID] [int] IDENTITY(1,1) NOT NULL, 
[CartTimeoutInMinutes] [int] NOT NULL, 
[MaximumOrderLimitPerUser] [int] NOT NULL, 
[MaximumOrderLimitPerSession] [int] NOT NULL, 
CONSTRAINT [PK_test_table] PRIMARY KEY CLUSTERED 
(
[ShoppingCartID] 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 

有时身份不工作,它从0开始,有时它的启动与1

预先感谢您。

+0

什么是您的测试案例是什么样子? – RickNZ 2009-12-14 12:44:22

回答

1

你怎么把数据放在那里?如果您使用的是常规INSERT,它应该从1开始。但是,您可以批量插入表中,或者使用标识插入;在这种情况下所有的赌注都关闭:

create table test (
    id int not null identity(1,1), 
    name varchar(20) not null) 
set identity_insert test on 
insert test (id, name) values (0, 'abc') 
insert test (id, name) values (27, 'def') 
set identity_insert test off 
select * from test 

与输出:

id   name 
----------- -------------------- 
0   abc 
27   def 

或者是与@@IDENTITY问题(在这种情况下:使用SCOPE_IDENTITY()代替)。

0

可能

是否使用DBCC CHECKIDENT?这是通过一些数据调用比较工具(如红门),并具有以下行为:

DBCC CHECKIDENT(表名,RESEED,new_reseed_value)

当前标识值设置为new_reseed_value

如果在创建表之后没有行插入到表中,或者使用TRUNCATE TABLE语句删除了所有行,则在运行DBCC CHECKIDENT后插入的第一行使用new_reseed_value作为标识。否则,插入的下一行使用new_reseed_value +当前增量值。

或者:您使用的是SET IDENTITY_INSERT

这些假设你在看表,而不是使用@@ IDENTITY(马克建议)

相关问题