Non puoi modificare le colonne esistenti per l'identità.
Hai 2 opzioni,
-
Crea una nuova tabella con identità e rilascia la tabella esistente
-
Crea una nuova colonna con identità e rilascia la colonna esistente
Approccio 1. (Nuova tabella ) Qui puoi conservare i valori dei dati esistenti nella colonna dell'identità appena creata. Nota che perderai tutti i dati se "se non esiste" non è soddisfatto, quindi assicurati di mettere anche la condizione sul 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'
Approccio 2 (Nuova colonna ) Non puoi conservare i valori dei dati esistenti nella colonna dell'identità appena creata, la colonna dell'identità conterrà la sequenza di numeri.
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'
Per ulteriori dettagli, vedere il seguente post sul forum di Microsoft SQL Server:
Come modificare la colonna in identity(1,1)