Stávající sloupce identity nelze změnit.
Máte 2 možnosti,
-
Vytvořte novou tabulku s identitou a zrušte stávající tabulku
-
Vytvořte nový sloupec s identitou a zrušte stávající sloupec
Přístup 1. (Nová tabulka ) Zde můžete zachovat stávající hodnoty dat v nově vytvořeném sloupci identity. Pamatujte, že pokud není splněna podmínka 'if not exists', ztratíte všechna data, takže se ujistěte, že jste podmínku položili také!
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'
Přístup 2 (Nový sloupec ) Nemůžete zachovat stávající hodnoty dat v nově vytvořeném sloupci identity. Sloupec identity bude obsahovat posloupnost čísel.
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'
Další podrobnosti naleznete v následujícím příspěvku na fóru Microsoft SQL Server:
Jak změnit sloupec na identitu(1,1)