2010-09-13 36 views
15

Estoy usando SQL Server 2008 Enterprise. Deseo agregar una columna de identidad (como índice agrupado único y clave principal) a una tabla existente. El aumento automático basado en números enteros por 1 columna de identidad está bien. Alguna solución?¿Cómo agregar una nueva columna de identidad a una tabla en SQL Server?

BTW: mi mayor confusión es para las filas existentes, ¿cómo completar automáticamente los datos de la nueva columna de identidad?

gracias de antemano, George

Respuesta

39

puede utilizar -

alter table <mytable> add ident INT IDENTITY 

Esto agrega la columna IDENTIFICACIÓN, para su mesa y añade datos a partir de 1, e incrementando en 1.

para agregar agrupado índice -

CREATE CLUSTERED INDEX <indexName> on <mytable>(ident) 
+0

Gracias, ¡pregunta respondida! – George2

+0

Agrupar por una columna de identidad podría crear un punto conflictivo al final de la tabla. Revisaría su 'necesidad' de agrupar con una columna de identidad. – Rawheiser

+0

@Rawheiser: Asumí columnas de identidad generalmente hechas para buenos candidatos para un índice agrupado. Si ha encontrado que este no es el caso, ¿tiene más información sobre el tema al que pueda dirigirme? – mwolfe02

0

have 1 approach in min d, pero no estoy seguro si es factible al final o no. Pero déjame asegurarte, este es un enfoque muy efectivo. Puede crear una tabla con una columna de identidad e insertar toda su información en esa tabla. Y a partir de allí, manejar cualquier duplicado de datos es un juego de niños. Hay dos formas de agregar una columna de identidad a una tabla con los datos existentes:

Create a new table with identity, copy data to this new table then drop the existing table followed by renaming the temp table. 

Create a new column with identity & drop the existing column 

de remisión, el que he encontrado 2 artículos: http://blog.sqlauthority.com/2009/05/03/sql-server-add-or-remove-identity-property-on-column/ http://cavemansblog.wordpress.com/2009/04/02/ sql-how-to-add-an-identity-column-to-a-table-with-data/

Cuestiones relacionadas