2009-12-14 66 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(馬克建議)

相關問題