2009-12-14 9 views
1

J'ai un tableau suivantparfois identité ne fonctionne pas

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 

Parfois, l'identité ne fonctionne pas, il est commence à 0 et parfois ses débuts avec 1.

Nous vous remercions à l'avance.

+0

À quoi ressemble votre cas de test comme? – RickNZ

Répondre

1

Comment placez-vous les données ici? Si vous utilisez le INSERT normal, il doit commencer à 1. Vous pouvez toutefois insérer en bloc dans la table ou utiliser autrement identity-insert; auquel cas tous les paris sont ouverts:

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 

avec sortie:

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

Ou est le problème relatif à @@IDENTITY (auquel cas: utiliser SCOPE_IDENTITY() à la place).

0

possible

Utilisez-vous DBCC CHECKIDENT? Ceci est invoquée par certaines données (par exemple comparer les outils Red Gate) et a le comportement suivant:

DBCC CHECKIDENT (nom_table, RESEED, new_reseed_value)

valeur d'identité actuelle est définie sur la new_reseed_value.

Si aucune ligne n'a été insérée dans la table depuis sa création ou si toutes les lignes ont été supprimées à l'aide de l'instruction TRUNCATE TABLE, la première ligne insérée après l'exécution de DBCC CHECKIDENT utilise new_reseed_value comme identité. Sinon, la ligne suivante insérée utilise new_reseed_value + la valeur d'incrémentation actuelle.

Ou: utilisez-vous SET IDENTITY_INSERT?

Ces supposons que vous êtes à la recherche à la table, plutôt que d'utiliser @@ IDENTITY (comme Mark a suggéré)

Questions connexes