Sous SQL Server, il existe la propriété IDENTITYpour une colonne. Exemple :
1 2 3 4 5 6
| CREATE TABLE dbo.Employe
(
Id int IDENTITY(1,1),
Nom varchar (50),
.... etc.
); |
Il se trouve que pour une table déjà existante (exemple dbo.MaTable), il n'est pas possible d'ajouter, à posteriori donc, la propriété IDENTITY.
Pour palier à cette limitation, une des techniques (il y en a bien d'autres) consiste à procéder comme suit :
1 - Créez une nouvelle table (Exemple MaTableCopie) ayant la même structure mais où la colonne concernée sera dotée de la propriété identité (IDENTITY)
Exemple :
1 2 3 4 5 6
| CREATE TABLE dbo.MaTableCopie
(
Id int IDENTITY(1,1),
Nom varchar (50),
.... etc.
); |
PS : N'oublier la clé primaire !
2 - Activez pour la nouvelle table (MaTableCopie) la possibilité d'insérer dans la colonne IDENTITY
SET IDENTITY_INSERT dbo.MaTableCopie ON
3 - Copiez les données depuis la table source (Matable) vers la nouvelle table (MatableCopie)
Exemple :
1 2 3
| INSERT INTO dbo.MaTableCopie (Id, Nom, .... )
SELECT Id, Nom, ...
FROM dbo.MaTable; |
4 - Désactivez pour la nouvelle table (MaTableCopie) la possibilité d'insérer dans la colonne IDENTITY
SET IDENTITY_INSERT dbo.MaTableCopie OFF;
5 - Vérifiez que la nouvelle table dbo.MaTableCopie contient bien toutes les données escomptées, puis droper l'ancienne table, c.à.d droper la table source dbo.MaTable)
6 - Renommez la nouvelle table dbo.MaTableCopie par l'ancien nom (celui de la table source que vous venez de dropper)
EXEC sp_rename 'dbo.MaTableCopie', 'MaTable';
NB : ne rajoutez pas le 'dbo.' dans le deuxième paramètre 'MaTable'
Et c'est tout !
Remarque :
Vous pouvez aussi, très simplement, réaliser cette transformation par SSMS :
Sous SSMS, en "mode Création" de la table dbo.MaTable, sélectionnez la colonne concernée, puis dans le panneau des propriétés de la dite colonne, sélectionnez le groupe "Spécification du compteur" puis modifier la valeur de la propriété "(Est d'identité)" à "Oui" puis enfin enregistrer les modifications ! et c'est tout ! SSMS s'occupera d'effectuer toutes les modification nécessaires !
Personnellement je préfère les scripts que rédige moi-même en toute maîtrise.
A+
Partager