0
とINSERTに主キーを返す私は、SQLデータベースへのデータの束を挿入するプログラムを持っています。データは、それぞれがタグの数を持つ、レポートで構成されています。フィールドを持ってpyodbc
タグは、関連するレポートの主キーを参照している、をREPORT_ID。
さて、私はデータを挿入するたびに、200のレポートまたはそれ以上、各多分持つ400個のタグが存在することができます。だから、擬似コードで私は今これをやっている:
for report in reports:
cursor_report = sql('INSERT report...')
cursor_report.commit()
report_id = sql('SELECT @@IDENTITY')
for tag in report:
cursor_tag += sql('INSERT tag, report_id=report_id')
cursor_tag.commit()
私は理由のカップルのためにこれを好きではありません。ほとんど私はSELECT @@IDENTITY
ステートメントが好きではありません。
- これは、別のプロセスが適切なタイミングでデータを挿入していた場合、ステートメントが間違った主キーを返すことを意味しませんか?
- は、私はむしろ
INSERT report...
のようなことが可能であり、挿入されたプライマリキーを返すでしょうか?
私は現在、レポートの間にコミットする必要があるので、プログラムはこれらの瞬間に「一時停止」します。私が最後にすべてをコミットすることができれば、それは費やされる時間を大幅に短縮するでしょう。私はタグでreport_id = (SELECT id FROM reports WHERE seperate_field=?)
か何かことができるように識別するために使用レポートがに別々のフィールドを作成し検討してきたが、それは非常にエレガントないないようです。