2016-07-21 16 views
-1

簡単な例を考えてみましょう。アイデンティティログをリセットせずに今すぐSQL Server:削除アクションでIDをリセット

enter image description here

は、私はいくつかのデータを削除するつもりだ:テストという名前のテーブルがあります

enter image description here

私は新しいデータを挿入すると、新しいIDがしますbe:7:

enter image description here

私はDBCC CHECKIDENT関数が自動的にテーブルテストのIDをリセットするために呼び出されたすべてのクエリを削除したいと思います。だから、「紫」を挿入すると、そのIDは4になります。これを行う方法はありますか?

+1

なぜあなたはそれをしたいですか?これは最後のものを削除しても動作しますが、 '2'を削除するとどうなりますか?' 2'にリセットした後、 '3'を挿入しようとすると重複したキーエラーが発生します。 –

+0

フアンは正しいです。しかし、削除された最後の値であるか最初にチェックすると仮定すると、トリガーを使用して目標を達成できます。 – PacoDePaco

+1

アイデンティティ値の隙間にハングアップしないでください。それは正常であり、期待されています。あなたがID4を削除した場合に起こりたいことは? –

答えて

0

あなたはDELETE TRIGGERを作成し、次のインサートが4

enter image description here

を使用しかし、再び、あなたが本当にすべきこのありえない何かますので

SQL Fiddle Demo

CREATE TRIGGER sampleTrigger 
    ON dbo.test 
    FOR DELETE 
AS 
    DECLARE @maxID int; 

    SELECT @maxID = MAX(id) 
    FROM test; 

    DBCC CHECKIDENT (test, RESEED, @maxID); 
GO 

を使用することができますそれを心配してください

+0

削除中に複数の行が影響を受けた場合どうなるでしょう – StackUser

+0

@StackUserフィドルのデモを見たかどうかは分かりませんが、 'id> 3'が削除され、IDは最大ID値にリセットされます。 –

+0

すばらしい!おかげで今すぐデモを見た – StackUser

関連する問題