Ajouter une identité à une colonne existante

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Ajouter une identité à une colonne existante

Message par ForumBot »

Ajouter une identité à une colonne existante

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

Re: Ajouter une identité à une colonne existante

Message par ayi »

Vous ne pouvez pas modifier les colonnes existantes pour y ajouter une identité.


Vous avez 2 options :





Créer une nouvelle table avec identité et supprimer la table existante





Créer une nouvelle colonne avec identité et supprimer la colonne existante


Approche 1. (Nouvelle table) Ici vous pouvez conserver les valeurs de données existantes dans la colonne d’identité nouvellement créée. Notez que vous perdrez toutes les données si la condition ‘if not exists’ n’est pas satisfaite, alors assurez-vous de mettre la condition sur le drop aussi !


`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 post suivant du forum Microsoft SQL Server pour plus de détails :


How to alter column to identity(1,1)

Répondre

Revenir à « SQL Server »