IDの既存の列を変更することはできません。
2つのオプションがあります
-
IDを使用して新しいテーブルを作成し、既存のテーブルを削除します
-
IDを使用して新しい列を作成し、既存の列を削除します
アプローチ1.(新しいテーブル )ここでは、新しく作成されたID列に既存のデータ値を保持できます。 「存在しない場合」が満たされない場合、すべてのデータが失われることに注意してください。そのため、条件もドロップするようにしてください!
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'
アプローチ2(新しい列 )新しく作成されたID列に既存のデータ値を保持することはできません。ID列には番号のシーケンスが保持されます。
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'
詳細については、次のMicrosoftSQLServerフォーラムの投稿を参照してください。
列をidentity(1,1)に変更する方法