2011-09-14 23 views
13

È possibile incrementare automaticamente una colonna in SQL Server SENZA che sia una chiave primaria?SQL Server incrementa automaticamente una colonna senza chiave primaria

Se sì, come può essere fatto.

Grazie

+1

Certo - la colonna deve essere dichiarata come INT IDENTITY (o BIGINT) - questo è tutto quello che c'è da fare. Nessun requisito per essere la chiave primaria - nessuna per niente ... –

+2

Cosa ti ha costretto dal ... provare? –

+0

@adrian: ... non sul tuo sistema di produzione, per favore! :-) –

risposta

25

Sì. Non è necessario che le colonne IDENTITY siano impostate come chiave primaria.

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

Anche se non sono sicuro quando ciò sarebbe utile. Se si dispone di una chiave naturale che si desidera utilizzare come PK, è probabile che si desideri applicare un vincolo univoco alla chiave alternativa surrogata.

Per l'impostazione delle relazioni FK a SQL Server non interessa se la/e colonna/e è/o PK o semplicemente richiede un indice univoco su di esso/su di esse.

+1

È un modo semplice per ricordare la sequenza in cui i record sono stati aggiunti alla tabella. –

+0

@Larry - Ah, certo. Non ci ho pensato. –

+1

@Larry, quindi è un CreatedDate con predefinito (getdate()), che è molto più significativo –

5

Dichiarare la colonna con la parola chiave IDENTITY e semplicemente non creare un vincolo PRIMARY KEY su di essa.

Problemi correlati