簡単な例を考えてみましょう。アイデンティティログをリセットせずに今すぐSQL Server:削除アクションでIDをリセット
は、私はいくつかのデータを削除するつもりだ:テストという名前のテーブルがあります
私は新しいデータを挿入すると、新しいIDがしますbe:7:
私はDBCC CHECKIDENT関数が自動的にテーブルテストのIDをリセットするために呼び出されたすべてのクエリを削除したいと思います。だから、「紫」を挿入すると、そのIDは4になります。これを行う方法はありますか?
簡単な例を考えてみましょう。アイデンティティログをリセットせずに今すぐSQL Server:削除アクションでIDをリセット
は、私はいくつかのデータを削除するつもりだ:テストという名前のテーブルがあります
私は新しいデータを挿入すると、新しいIDがしますbe:7:
私はDBCC CHECKIDENT関数が自動的にテーブルテストのIDをリセットするために呼び出されたすべてのクエリを削除したいと思います。だから、「紫」を挿入すると、そのIDは4になります。これを行う方法はありますか?
あなたはDELETE TRIGGER
を作成し、次のインサートが4
を使用しかし、再び、あなたが本当にすべきこのありえない何かますので
CREATE TRIGGER sampleTrigger
ON dbo.test
FOR DELETE
AS
DECLARE @maxID int;
SELECT @maxID = MAX(id)
FROM test;
DBCC CHECKIDENT (test, RESEED, @maxID);
GO
を使用することができますそれを心配してください
なぜあなたはそれをしたいですか?これは最後のものを削除しても動作しますが、 '2'を削除するとどうなりますか?' 2'にリセットした後、 '3'を挿入しようとすると重複したキーエラーが発生します。 –
フアンは正しいです。しかし、削除された最後の値であるか最初にチェックすると仮定すると、トリガーを使用して目標を達成できます。 – PacoDePaco
アイデンティティ値の隙間にハングアップしないでください。それは正常であり、期待されています。あなたがID4を削除した場合に起こりたいことは? –