2011-09-14 2 views
13

Est-il possible d'incrémenter automatiquement une colonne dans SQL Server SANS être une clé primaire?Incrémentation automatique de SQL Server une colonne sans clé primaire

Si oui, comment cela peut-il être fait.

Merci

+1

Bien sûr - la colonne doit juste être déclarée comme INT IDENTITY (ou BIGINT) - c'est tout ce qu'il y a à faire. Pas besoin d'être la clé primaire - pas du tout ... –

+2

Qu'est-ce qui vous a contraint ... essayer? –

+0

@adrian: ... juste pas sur votre système de production, s'il vous plaît! :-) –

Répondre

25

Oui. Il n'est pas nécessaire que les colonnes IDENTITY deviennent une clé primaire.

CREATE TABLE T 
(
X INT PRIMARY KEY, 
Y INT IDENTITY(1,1) 
) 

Bien que je ne sois pas sûr quand cela serait utile. Si vous avez une clé naturelle que vous voulez utiliser comme PK, vous voudrez probablement mettre une contrainte unique sur la clé alternative de substitution de toute façon.

Aux fins de la mise en place des relations FK, SQL Server ne se soucie pas si la ou les colonne (s) est la PK ou non, elle ne nécessite qu'un index unique dessus.

+1

C'est un moyen facile de se souvenir de la séquence dans laquelle les enregistrements ont été ajoutés à la table. –

+0

@Larry - Ah bien sûr. Je n'y ai pas pensé. –

+1

@Larry, ainsi est un CreatedDate avec default (getdate()), ce qui est beaucoup plus significatif –

5

Déclarez la colonne avec le mot clé IDENTITY et ne créez simplement pas de contrainte PRIMARY KEY.

Questions connexes