<p>Vous ne pouvez pas modifier les colonnes existantes pour y ajouter une identité.</p>
<p>Vous avez 2 options :</p>
<ul>
<li></li>
</ul>
<p>Créer une nouvelle table avec identité et supprimer la table existante</p>
<ul>
<li></li>
</ul>
<p>Créer une nouvelle colonne avec identité et supprimer la colonne existante</p>
<p>Approche 1. (<em>Nouvelle table</em>) 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 !</p>
<p>`CREATE TABLE dbo.Tmp_Names<br>
(<br>
Id int NOT NULL<br>
IDENTITY(1, 1),<br>
Name varchar(50) NULL<br>
)<br>
ON [PRIMARY]<br>
go</p>
<p>SET IDENTITY_INSERT dbo.Tmp_Names ON<br>
go</p>
<p>IF EXISTS ( SELECT <br>
FROM dbo.Names )<br>
INSERT INTO dbo.Tmp_Names ( Id, Name )<br>
SELECT Id,<br>
Name<br>
FROM dbo.Names TABLOCKX<br>
go</p>
<p>SET IDENTITY_INSERT dbo.Tmp_Names OFF<br>
go</p>
<p>DROP TABLE dbo.Names<br>
go</p>
<p>Exec sp_rename ‘Tmp_Names’, ‘Names’</p>
<pre><code class="lang-auto">
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'
</code></pre>
<p>Consultez le post suivant du forum Microsoft SQL Server pour plus de détails :</p>
<p><a href="https://learn.microsoft.com/en-us/answers/questions/1691006/how-to-alter-column-to-identity(1-1)">How to alter column to identity(1,1)</a></p>