2

AccessからSQLServer2008にデータをインポートするアプリケーションに取り組んでいます。現在、ストアドプロシージャを使用して、レコードごとにデータを個別にインポートしています。データが2つの関連するテーブルに挿入されるため、一括挿入などを使用できません...アカウントテーブルに入力されるフィールド(名、姓など)と3つのフィールドがあります。それぞれがInsuranceテーブルにレコードを持ち、ストアドプロシージャのSCOPE_IDENTITYで選択された自動インクリメントのAccountIDによってAccountテーブルにリンクされます。

アプリケーションからデータベースへのラウンドトリップの数が多いため、パフォーマンスはあまり良くありません。この理由と他のいくつかの理由から、代わりにステージングテーブルを使用して、そこからデータをインポートすることを計画しています。これにアプローチするための私のオプションを読んで、ステージングテーブルのデータに対して同じ挿入ストアドプロシージャを実行するカーソルは理にかなっています。ただし、カーソルは邪悪な化身であり、避ける必要があるようです。

セットベースの操作で、1つのテーブルにデータを挿入し、自動生成されたIDを取得してから、対応するIDを使用して同じレコードのデータを別のテーブルに挿入する方法はありますか?それとも、カーソルはここでの唯一のオプションですか?

4

2 に答える 2

3

OUTPUT 句を見てください。これを INSERT ステートメントに追加して、必要なことを実行できるはずです。

ところで、最初のテーブルに挿入されなかった列を 2 番目のテーブルに出力する必要がある場合は、その OUTPUT 句がソースからの他の列の参照をサポートしているため、INSERT の代わりに MERGE を使用します (元の質問へのコメントで提案されているように)。テーブル。それ以外の場合は、INSERT で保持する方が簡単で、挿入された ID 列にアクセスできます。

于 2011-10-20T23:31:33.967 に答える
1

データバインディングを使用して複数のレコードを関連テーブルに挿入する実験を行っています。だから、これを試してみてください!

うまくいけば、これは非常に役に立ちます。このリンクに従ってくださいHow to insert record into related tables。詳細については。

于 2012-05-08T06:15:58.940 に答える