ID 列の値を予約、スキップ、またはインクリメントする方法はありますか?
1 対 1 の関係で結合された 2 つのテーブルがあります。最初の列には IDENTITY PK 列があり、2 番目の列には int PK (IDENTITY ではない) があります。以前は最初に挿入し、ID を取得して 2 番目に挿入していました。そして、それは正常に動作します。
ここで、最初のテーブルに挿入せずに、2 番目のテーブルに値を挿入する必要があります。
次に、IDENTITY シードをインクリメントして、2 番目のテーブルに挿入できますが、最初のテーブルの ID に「穴」を残す方法を教えてください。
編集:詳細
これは機能します:
-- I need new seed number, but not table row
-- so i will insert foo row, get id, and delete it
INSERT INTO TABLE1 (SomeRequiredField) VALUES ('foo');
SET @NewID = SCOPE_IDENTITY();
DELETE FROM TABLE1 WHERE ID=@NewID;
-- Then I can insert in TABLE2
INSERT INTO (ID, Field, Field) VALUES (@NewID, 'Value', 'Value');
もう一度-これは機能します。
質問は、テーブルに挿入せずに ID を取得できますか?
DBCC には所有者権限が必要です。それを行うためのクリーンなユーザー呼び出し可能なSQLはありますか?