我有一张下表
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 :(得分:1)
你如何将数据放在那里?如果您使用常规INSERT
,则应从1开始。但是,您可以批量插入表中,或以其他方式使用identity-insert;在这种情况下,所有赌注都已关闭:
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()
)。
答案 1 :(得分:0)
可能的
您使用的是DBCC CHECKIDENT吗?这是由一些数据比较工具(例如Red Gate)调用的,具有以下行为:
DBCC CHECKIDENT(table_name,RESEED,new_reseed_value)
当前标识值设置为
new_reseed_value
。如果自创建表后没有向表中插入行,或者如果使用TRUNCATE TABLE语句删除了所有行,则在运行DBCC CHECKIDENT后插入的第一行使用
new_reseed_value
作为标识。否则,插入的下一行使用new_reseed_value
+当前增量值。
或者:您使用的是SET IDENTITY_INSERT吗?
这些假设您正在查看表格,而不是使用@@ IDENTITY(如Mark建议的那样)