web-dev-qa-db-fra.com

Comment ajouter une nouvelle colonne d'identité à une table dans SQL Server?

J'utilise SQL Server 2008 Enterprise. Je souhaite ajouter une colonne d'identité (en tant qu'index cluster unique et clé primaire) à une table existante. La colonne d’identification à augmentation automatique basée sur un entier est correcte. Des solutions?

BTW: ma plus grande confusion est pour les lignes existantes, comment remplir automatiquement de nouvelles données de colonne d'identité?

merci d'avance, George

18
George2

vous pouvez utiliser -

alter table <mytable> add ident INT IDENTITY

Cela ajoute la colonne ident à votre table et ajoute des données à partir de 1 et incrémentées de 1.

Pour ajouter un index clusterisé - 

CREATE CLUSTERED INDEX <indexName> on <mytable>(ident) 
44
Sachin Shanbhag

ayez une approche en tête, mais ne savez pas si cela est réalisable de votre côté ou non. Mais laissez-moi vous assurer que cette approche est très efficace. Vous pouvez créer une table ayant une colonne d'identité et insérer toutes vos données dans cette table. Et à partir de là, le traitement des données en double est un jeu d'enfant. Il existe deux manières d'ajouter une colonne d'identité à une table avec des données existantes:

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

Pour référence, j'ai trouvé 2 articles: 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/ 

0
NG.