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
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)
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/