2

SQL が最新の ID を追跡していることに気付きました (フィールドは、新しいレコードが作成されるたびに自動的に増加します)。C# を使用して、テーブルから最新の ID を取得したいと考えています。残念ながら、ほとんどの場合、テーブルは空です (レコードが書き込まれ、しばらくすると削除されるため、テーブルが空であることがよくあります)。C# SQL API の範囲内でこれを行うことは可能ですか?それとも、これを取得するストアド プロシージャを作成する必要がありますか?

ここに画像の説明を入力

よりよく説明するために。上記の行が削除された場合、次のレコードの次の ID 番号は 32 になります。テーブルが空の状況で、レコードが書き込まれる前に 32 を取得したいと考えています。

4

3 に答える 3

4
SELECT IDENT_CURRENT('table_name')+1;

IDENT_CURRENT は、任意のセッションおよび任意のスコープで特定のテーブルに対して生成された最後の ID 値を返します。

http://msdn.microsoft.com/en-us/library/ms175098.aspx


ただし、これは次のIDがどうなるかを示していますが、必ずしも自分が入力した次のIDになるとは限りません。他の誰かがINSERTあなたの前に新記録を出すかもしれません。

つまり、次に挿入するものの値を返す方法はありません。

于 2012-04-19T14:40:44.060 に答える
0

増分が通常の「1」でない場合に備えて:

SELECT IDENT_CURRENT('mytable') + IDENT_INCR('mytable')

もちろん、これらはすべて ID 列が一貫して入力されていることに依存しています。つまり、手動で挿入したり再シードしたりする必要はありません。また、Curt は、この ID を挿入に直接使用する場合に発生する可能性のある同時実行の問題について言及しています。

于 2012-04-19T14:49:38.440 に答える
0

それは次のクエリになります

DBCC CHECKIDENT ('[テーブル名]', NORESEED )

于 2012-04-19T14:41:12.547 に答える