2

重複の可能性:
データを失うことなくテーブルを作成した後に自動インクリメントを設定する方法は?

自動生成されるように SQL Server 2012 テーブルの主キー列 (整数型) を変更するにはどうすればよいですか?

4

3 に答える 3

2
CREATE TABLE dbo.Test(PkCol int CONSTRAINT PK_Test_PkCol PRIMARY KEY, OtherCol varchar(1));

ALTER TABLE dbo.Test
DROP CONSTRAINT PK_Test_PkCol 
GO
ALTER TABLE dbo.Test DROP COLUMN PkCol
ALTER TABLE dbo.Test
ADD PkCol int IDENTITY(1,1) CONSTRAINT PK_Test_PkCol PRIMARY KEY
GO

身元

于 2013-01-18T12:28:16.080 に答える
2

既存の列を削除して、列タイプが として指定された新しい列を追加できますIDENTITY

しかし、注意してください!

ここから以下のコメントを気に入ってコピーしました:

既存の列を削除して同じ名前の新しい列を追加し、ID として定義すると、テーブル内の一部のレコードの主キーの値が変更される可能性があります。新しい列が古い列と同じ値になるという保証はありません。

列自体を ID 列に変更する方法がないため、ID 列を含む新しいテーブルを作成し、古いテーブルのデータを新しいテーブルに挿入する必要があります (set identity_insert をオンにすると、元のテーブルの名前を変更するか、元のテーブルを削除します (最初に名前を変更することをお勧めします。これにより、問題が発生した場合に変更をロールバックできます)。新しいテーブルを元のテーブルの名前に変更し、元のテーブルを参照する外部キーを再作成しdbcc checkident、ID のシードを次の番号に初期化するために実行します。

于 2013-01-18T12:35:22.723 に答える
1

SQL 2012 と言ったので、別のオプションがあります: シーケンスです。「次の値」を列のデフォルトとして使用する方法については、Books Onlineを参照してください。

于 2013-01-18T13:16:46.963 に答える