挿入から返されたIDをトランザクションの後続の挿入で使用したい

StackOverflow https://stackoverflow.com/questions/5411697

  •  29-10-2019
  •  | 
  •  

質問

データベースアクセスにRobConeryの大規模を使用しています。トランザクションをいくつかの挿入にラップしたいのですが、2番目の挿入は最初の挿入から返されたIDを使用します。トランザクションでこれを行う方法は私には明らかではありません。いくつかの支援をいただければ幸いです。 ジェネラコディセタグプレ

役に立ちましたか?

解決

ストアドプロシージャでそれを実行できますか?scope_identityまたはそれ以上の出力句を使用して、必要な値を取得できます。また、すべてのテーブルへのすべての挿入は1つのトランザクションに含まれ、いずれかが失敗した場合にロールバックできます。

他のヒント

これら2つの挿入の間でクエリを実行します。Massiveのこのメソッドが役立つ場合があります: ジェネラコディセタグプレ

SQLは="select scope_identity()" になります

更新2013/02/26

Massiveコードをもう一度見ると、最後に挿入されたIDを取得する信頼できる方法はありません。

上記のコードは、「selectscope_identity()」を作成する接続がプールされている場合にのみ機能します。(挿入した接続と同じである必要があります)。

大規模なtable.Insert(..)メソッドは、「SELECT @@ IDENTITY」で埋められたIDフィールドを含むDynamicを返します。グローバルスコープから最後に挿入されたIDを取得しますが、これは明らかなバグです(マルチスレッドシナリオで明らかです)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top