• 文字サイズ変更
  • S
  • M
  • L

FAQのNo.から検索


  • No : 32737
  • 公開日時 : 2021/02/16 15:54
  • 更新日時 : 2024/04/09 16:17
  • 印刷

【DataSpider】同一トランザクション内で更新済みのレコードについて[SQL実行によるデータ取得]を実行すると、更新前のデータを取得してしまいます

[トランザクション]コンポーネント内で、DBの特定のレコードについて更新するSQLを実行後、[SQL実行によるデータ取得]ロジックを実行し、該当レコードのデータを取得すると更新前のデータを取得してしまいます。
 
原因と対応策を教えてください。
カテゴリー : 

回答

■仕様説明
 Mapper は仕様制限としてトランザクションをサポートしておりません。
 ------
 Mapper は、トランザクションをサポートしていません。トランザクション内での Mapper の挙動は以下の通りです。
 変数に代入した場合、失敗しても変数値はロールバックされません。
 Mapper より前の処理で変更したデータベースやファイルの内容を参照することはできません。
 ------

 ▼DataSpider Servista
 ・[アダプタ] - [変換] –[基本] –[マッピング] - [仕様制限]
  URL:https://www.hulft.com/help/ja-jp/DataSpider/latest/help/ja/mapper/mapper.html

 ▼DataSpider Cloud
 ・[アダプタ] - [変換] –[基本] –[マッピング] - [仕様制限]
  URL:https://doc.dataspidercloud.com/latest/help/ja/mapper/mapper.html

 上記より Mapper ロジック全般がトランザクションに参加していないため、
 [SQL 実行によるデータ取得] ロジックについても、都度クエリを発行しデータを取得しております。
 
 このため、データ取得結果はDB側のトランザクション分離レベルに依存します。
 
■想定される原因
 [SQL実行によるデータ取得]ロジックの実行時に同一トランザクション内の更新処理の結果がコミットされていないことが原因と想定されます。
 
■想定される対応策
 [SQL実行によるデータ取得]ロジックでデータを取得している箇所を該当のDBアダプタの[検索系SQL実行]処理に置き換えることで、更新後のデータが取得可能かご確認ください。
 
■参考
  • [SQL実行によるデータ取得]
Version Information
Ver.4.2、Ver.4.1、Ver.4.0
目的別で検索
設定