2011-09-14 13 views
13

¿Es posible incrementar automáticamente una columna en SQL Server SIN que sea una clave principal?SQL Server auto incrementar una columna sin clave primaria

En caso afirmativo, ¿cómo se puede hacer esto?

Gracias

+1

Claro, la columna solo tiene que declararse como "IDENTIDAD INT" (o BIGINT) - eso es todo. No es necesario que sea la clave principal, nada en absoluto ... –

+2

¿Qué lo forzó a ... intentarlo? –

+0

@adrian: ... ¡simplemente no en su sistema de producción, por favor! :-) –

Respuesta

25

Sí. No es necesario que las columnas IDENTITY se conviertan en clave principal.

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

Aunque no estoy seguro de cuándo sería útil. Si tiene una clave natural que desea usar como PK, probablemente quiera establecer una restricción única en la clave alternativa sustituta de todos modos.

Para establecer las relaciones FK, a SQL Server no le importa si la (s) columna (s) es (n) PK o no, solo requiere un índice único en ella/ellos.

+1

Es una forma fácil de recordar la secuencia en la que se agregaron los registros a la tabla. –

+0

@Larry - Ah, por supuesto. No pensé en eso. –

+1

@Larry, así es un CreatedDate con el valor predeterminado (getdate()), que es mucho más significativo –

5

Declare la columna con la palabra clave IDENTIDAD, y simplemente no cree una restricción PRIMARY KEY sobre ella.

Cuestiones relacionadas