2

Access 2003 アプリケーションを Access 2010 に移行しています。アプリケーションは postgres odbc ドライバーを使用してデータにアクセスします。

アクセス2010では、最近挿入された行のIDを識別するためにpostgresqlサーバーでIDENT_CURRENT関数(wiresharkで見られるように)を使用しようとします...残念ながら、IDENT_CURRENTは私が知る限りpostgresqlでサポートされている関数ではありません...

postgresql 8.3 データベースで最新の postgresql ODBC ドライバー (9.0) を使用しています。

4

1 に答える 1

1

使用currvalするのが正しい方法です(強調は私のものです):

nextval現在のセッションでこのシーケンスに対してによって取得された最新の値を返します。nextval(このセッションでこのシーケンスに対して が一度も呼び出されていない場合は、エラーが報告されます。)これはセッション ローカルな値を返すため、現在のセッションが実行されてから他のセッションが実行されたかどうかに関係なく、予測可能な答えが得られnextvalます。

そして、それをIDENT_CURRENT関数にラップすることは、完全に合理的な移植手法です。

ステートメントで使用することもできRETURNING idますINSERT(ここでも強調します):

オプションのRETURNING句によりINSERT、実際に挿入された各行に基づいて値が計算され、返されます。これは主に、シリアル シーケンス番号など、デフォルトで提供された値を取得する場合に役立ちます。

それは少し速くてきれいかもしれませんが、それでも移植性の問題がいくつかあります. OTOH、何をしても移植性の問題が発生すると思います。

于 2011-04-05T16:31:02.667 に答える