Vous ne pouvez pas modifier les colonnes existantes pour l'identité.
Vous avez 2 options,
-
Créez une nouvelle table avec l'identité et supprimez la table existante
-
Créez une nouvelle colonne avec l'identité et supprimez la colonne existante
Approche 1. (Nouveau tableau ) Ici, vous pouvez conserver les valeurs de données existantes sur la colonne d'identité nouvellement créée. Notez que vous perdrez toutes les données si 'if not exists' n'est pas satisfait, alors assurez-vous de mettre également la condition sur le drop !
CREATE TABLE dbo.Tmp_Names
(
Id int NOT NULL
IDENTITY(1, 1),
Name varchar(50) NULL
)
ON [PRIMARY]
go
SET IDENTITY_INSERT dbo.Tmp_Names ON
go
IF EXISTS ( SELECT *
FROM dbo.Names )
INSERT INTO dbo.Tmp_Names ( Id, Name )
SELECT Id,
Name
FROM dbo.Names TABLOCKX
go
SET IDENTITY_INSERT dbo.Tmp_Names OFF
go
DROP TABLE dbo.Names
go
Exec sp_rename 'Tmp_Names', 'Names'
Approche 2 (Nouvelle colonne ) Vous ne pouvez pas conserver les valeurs de données existantes dans la colonne d'identité nouvellement créée. La colonne d'identité contiendra la séquence de nombres.
Alter Table Names
Add Id_new Int Identity(1, 1)
Go
Alter Table Names Drop Column ID
Go
Exec sp_rename 'Names.Id_new', 'ID', 'Column'
Consultez le message suivant du forum Microsoft SQL Server pour plus de détails :
Comment modifier la colonne en identité (1,1)