17

SQL Server Management Studio を使用していますが、テーブル行の自動インクリメント主キー値を別の値に変更したいと考えています。もちろん、編集のためにテーブルを開いた後、SQL Server Management Studio では、このフィールドがすべての行でグレー表示されます。

出来ますか?誤って削除した行の番号を使用したいので、それは有効です (他の主キー値との競合はありません)。そして最も重要なのは、DB に追加された次の行には、そのままの自動インクリメント値が含まれている必要があることです。

ありがとう。

編集: この PK の他のテーブル レコードとのリンクを失うことは、この行の問題ではありません。手動で復元できます。

4

1 に答える 1

23

必ずしも推奨されるわけではありませんが、番号を変更する行のコピーを挿入しますが、必要な ID を使用します。

SET IDENTITY_INSERT aTable ON
GO

-- Attempt to insert an explicit ID value of 3
INSERT INTO aTable (id, product) VALUES(3, 'blah')       
GO

SET IDENTITY_INSERT aTable OFF
GO

次に、不要な番号の行を削除します (FK 参照を更新した後)。

詳細はこちら: http://technet.microsoft.com/en-us/library/aa259221(v=sql.80).aspx


後世のために、以下のコメントの質問を明確にするために、自動インクリメント値は、現在の最大値よりも大きい値を挿入した場合にのみ影響を受けます。

リンクされた記事からの引用:

挿入された値がテーブルの現在の ID 値より大きい場合、SQL Server は新しく挿入された値を現在の ID 値として自動的に使用します。

于 2013-09-19T08:13:05.540 に答える