Du kan ikke ændre de eksisterende kolonner for identitet.
Du har 2 muligheder,
-
Opret en ny tabel med identitet og slip den eksisterende tabel
-
Opret en ny kolonne med identitet og slip den eksisterende kolonne
Fremgangsmåde 1. (Ny tabel ) Her kan du beholde de eksisterende dataværdier på den nyoprettede identitetskolonne. Bemærk, at du vil miste alle data, hvis 'hvis ikke eksisterer' ikke er opfyldt, så sørg for at sætte betingelsen på drop også!
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'
Fremgangsmåde 2 (Ny kolonne ) Du kan ikke beholde de eksisterende dataværdier på den nyoprettede identitetskolonne. Identitetskolonnen vil indeholde nummersekvensen.
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'
Se følgende Microsoft SQL Server Forum-indlæg for flere detaljer:
Sådan ændres kolonne til identitet(1,1)