简体   繁体   中英

sometimes Identity isn't working

I have a following table

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

Sometimes Identity isn't working, it's start with 0 and sometimes its start with 1.

Thank you in advance.

How are you putting the data in there? If you are using regular INSERT it should start at 1. You can, however, bulk-insert into the table, or otherwise use identity-insert; in which case all bets are off:

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

with output:

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

Or is the problem relating to @@IDENTITY (in which case: use SCOPE_IDENTITY() instead).

Possible

Are you using DBCC CHECKIDENT ? This is invoked by some data compare tools (eg Red Gate) and has the following behaviour:

DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value )

Current identity value is set to the new_reseed_value .

If no rows have been inserted into the table since the table was created, or if all rows have been removed by using the TRUNCATE TABLE statement, the first row inserted after you run DBCC CHECKIDENT uses new_reseed_value as the identity. Otherwise, the next row inserted uses new_reseed_value + the current increment value.

Or: are you using SET IDENTITY_INSERT ?

These assume you are looking at the table, rather then using @@IDENTITY (as Mark suggested)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM