15

このトピックに関する他のいくつかの質問を見つけました。これです...

postgresqlのmysql_insert_id代替

...そしてマニュアルlastval()には、いつでも電話をかけることができ、期待どおりに機能することが示されているようです。しかし、これは...

PostgresqlとPHP:マルチユーザーアプリケーションで、currvalは最後に挿入されたIDを取得するための効率的な方法ですか?

...トランザクション内にある必要があると述べているようです。lastval()だから私の質問はこれです:(トランザクションなしで)クエリを実行する前に、好きなだけ待つことができますか?そして、それは多くの同時接続に直面しても信頼できますか?

4

2 に答える 2

32

PostgreSQLのINSERT、UPDATE、およびDELETEにはRETURNING句があり、これは次のことができることを意味します。

INSERT INTO ....
RETURNING id;

次に、クエリは、挿入された各行のidに対して挿入された値を返します。サーバーへのラウンドトリップを保存します。

于 2011-06-27T05:16:48.143 に答える
6

はい、シーケンス関数は、シーケンスオブジェクトから連続するシーケンス値を取得するためのマルチユーザーセーフなメソッドを提供します。

于 2011-06-26T18:14:15.877 に答える