Est-il possible d'insérer 0
dans le champ de clé primaire d'une table dans SQL Server 2008?Zéro en tant que clé primaire dans SQL Server 2008
Répondre
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.
est-ce possible dans le domaine de l'identité ...? est-il possible de démarrer l'identité à partir de zéro? – Nithesh
J'ai modifié ma réponse avec des informations sur les colonnes 'identity'. –
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
)
Numérique ZERO - oui. NULL - non. Une clé primaire ** doit être ** NON NULL –