8

私はc ++ 4.8(利用可能な4.9)とpqxxドライバーバージョンを使用しています。4.0.1。postgresdb は最新の安定版です。

私の問題は、複雑さとリソースのバランスに関するものです。

データベースへの挿入を実行する必要があり (オプションで pqxx::result があります)、そのテーブルの id は nextval(table_seq_id) に基づいています

結果として挿入された行のIDを取得することは可能ですか? これには回避策があり、db に currentvalue について順番に尋ね、currentvalue+1 (または +n) でクエリを挿入するだけですが、これには「挿入して尋ねる」チェーンを実行する必要があります。

Db は、1 秒あたり 6K を超える大きなリクエストを格納できる必要があります。だから私はできるだけ頻繁にIDについて尋ねたいと思います. 一括挿入はオプションではありません。

4

1 に答える 1

8

hereに記載されRETURNINGているように、クエリに句を追加してINSERT、挿入された行から値を返すことができます。彼らはあなたが望むものに似た例を示し、IDを返します:

INSERT INTO distributors (did, dname) VALUES (DEFAULT, 'XYZ Widgets')
   RETURNING did;
于 2014-10-23T16:19:01.987 に答える