2010-12-07 13 views

Répondre

6

Tant que c'est un champ numérique, oui ... continuez à la maison!

create table TestTable 
(
    TestColumn int not null primary key 
) 

insert TestTable values(0) 

La restriction primary key exige seulement que la valeur soit unique et la colonne ne soit pas annulable.

Pour un champ identity:

create table TestTable 
(
    TestColumn int identity(1, 1) not null primary key --start at 1 
) 

set identity_insert TestTable on 
insert TestTable (TestColumn) values (0) --explicitly insert 0 
set identity_insert TestTable off 

Le identity(1, 1) signifie « commencer à un et l'incrément d'une unité chaque fois que quelque chose est inséré ». Vous pouvez avoir identity(-100, 10) pour commencer à -100 et incrémenter de 10 chaque fois. Ou vous pouvez commencer à 0. Il n'y a pas de restriction.

Vous pouvez généralement répondre à ces questions par vous-même en les essayant et en voyant si elles fonctionnent. C'est plus rapide et généralement plus bénéfique que de demander sur StackOverflow.

+0

est-ce possible dans le domaine de l'identité ...? est-il possible de démarrer l'identité à partir de zéro? – Nithesh

+0

J'ai modifié ma réponse avec des informations sur les colonnes 'identity'. –

0

Oui, il peut être zéro. La valeur peut aller de -2 147 483 648 à 2 147 483 647, de - (2^31) à 2^31 - 1, la plage complète d'un entier non signé.

Si vous attendez beaucoup d'enregistrements, par exemple jusqu'à 4,3 milliards, il est logique de commencer à partir de la plus petite valeur et de remonter la pente.

CREATE TABLE TestTable 
(
    TestColumn INT IDENTITY(−2,147,483,648, 1) NOT NULL PRIMARY KEY --start at 1 
)