ページの先頭です。
ここから本文です。

よくあるご質問(サポートFAQ)

【SystemDirector Enterprise for Batch】PostgreSQLのトランザクション制御について(SELECT FOR UPDATE)

質問内容

PostgreSQLのバッチアプリケーションを作成し、カーソル定義でSELECT FOR UPDATEを設定したがうまく動かない。

回答内容

PostgreSQLでは、参照系のコネクションと更新系コネクションに分
けて生成しています。これは分割コミットを可能とするためです。
しかしこの弊害として、SELECT FOR UPDATE に対応できません。こ
のため、SDE for Java Batch Client 上で、次のコーディングをす
ることで対応する必要があります。


(1) import文として、以下の内容を追記。
import org.springframework.jdbc.datasource.DataSourceUtils;

(2) 参照系コネクションを無効化にし、更新系コネクションのみを
使います。
※この場合、分割コミットが使えませんので、最後に一括コミ
ットをしてください。

初期処理ノードの配下のフリー記述ノードに、下記のような内
容を追加します。

// 参照系コネクションのバックアップ
bakConn = dbAccessor.getConnection();

※bakConn変数は別途メンバ変数(Connection型)として定義

(3) 生成コードにて利用するコネクションを全て更新系コネクショ
ンに変更します。

// 更新系コネクションを検索系コネクション格納用変数に設定
dbAccessor.setConnection(dbAccessor.getConnection2());

(4) 最後に、コネクションをクローズする処理を追記します。
JOBSTEPメソッド例外処理ノードのFINALLYノードの配下の
フリー記述ノードに、下記のような内容を追加

// 参照系コネクションのリリース
DataSourceUtils.releaseConnection(bakConn, dataSource);

以上です。

【確認済みのバージョン】Ver.8.0系以降
【確認済みのエディション】Java版
【確認済みの対象OS】全OS

製品名カテゴリ

SystemDirector Enterprise for Java(バッチ)/C Batch

  • コンテンツID: 3150110789
  • 公開日: 2016年01月27日
  • 最終更新日:2016年01月27日

アンケート

サポート情報充実のためアンケートにご協力をお願いいたします。



コメント欄:
ここからページ共通メニューです。 ページ共通メニューを読み飛ばす。