テーブルから、挿入された、または更新された最新のIDを取得したいと思います。しかし、私が次のコードを書くときはいつでも、結果はまったくありません。
select *
from PersonHowEducation prh
inner join HowzeEducation he on prh.HowzeEducationId = he.HowzeEducationId
where he.HowzeEducationId = @@IDENTITY
私は本当に何をしますか?
テーブルから、挿入された、または更新された最新のIDを取得したいと思います。しかし、私が次のコードを書くときはいつでも、結果はまったくありません。
select *
from PersonHowEducation prh
inner join HowzeEducation he on prh.HowzeEducationId = he.HowzeEducationId
where he.HowzeEducationId = @@IDENTITY
私は本当に何をしますか?
これがバッチスクリプトの一部であり、同じセッションに挿入したばかりの場合は、SCOPE_IDENTITY()を使用して最後に挿入されたHowzeEducationId
値を取得します。
select * from PersonHowEducation prh inner join HowzeEducation he on
prh.HowzeEducationId=he.HowzeEducationId
where he.HowzeEducationId=SCOPE_IDENTITY()
ただし、これが完全に異なるセッションからのものである場合、つまり挿入を実行しただけではないセッションの場合は、を使用して最後に挿入されたレコードを取得できます。
select * from PersonHowEducation prh inner join HowzeEducation he on
prh.HowzeEducationId=he.HowzeEducationId
where he.HowzeEducationId=(select top(1) HowzeEducationId from HowzeEducation
order by HowzeEducationId desc)
注:ID挿入によってテーブルに最大のIDが作成されない場合がまれにあります。たとえば、テーブルにid = 1,000,000,001のレコードが1つあると判断し、IDを手動で10,001に再シードした場合などです。
別の方法。挿入後にレコードが削除される可能性がある場合は、フィズする可能性があります。
select * from PersonHowEducation prh inner join HowzeEducation he on
prh.HowzeEducationId=he.HowzeEducationId
where he.HowzeEducationId=(SELECT IDENT_CURRENT('HowzeEducation'))