1

私のOS/400 v6.xシステムでは、RPG IVプログラムでWRITEコマンドを実行するか、STRSQLからINSERTステートメントを作成するたびに正しく起動されるADDPFTRGコマンドを使用して、物理ファイル(DB2テーブル)のAFTERINSERTトリガーを作成しました。しかし、JT400(JTOpen)JDBCドライバーを使用してJavaプログラムからINSERTステートメントを実行すると、トリガーが起動されません。

どちらのシナリオ(OS400およびJavaから)でも、レコードは正常に挿入されますが、トリガーは、レコードがOS400の方法から挿入された場合にのみ発生します。

私はIBMレッドブックJTOpenフォーラム、およびGoogleで、私のケースに関連する可能性のあるものをすべて検索しましたが、何も見つかりませんでした。

残念ながら、JT400 jarにはバージョン番号がないため、自分のバージョンが廃止されているかどうかわかりません。また、JTOpenページから最も簡単なものを試す機会がありませんでした。

Java / JT400からDB2トリガーを起動することを妨げる技術的な制限またはライブラリのバグはありますか?

4

2 に答える 2

0

ライブラリ リストだけが問題ではありません。ADDPFTRG コマンドの "Threadsafe" および "Multithreaded job action" パラメータに注意する必要がある場合があります。

ADDPFTRG .... THDSAFE(*YES) MLTTHDACN(*RUN)

于 2016-07-06T21:49:12.797 に答える
0

私は自分の問題を解決し、解決策を投稿して、同様の問題を抱えている他の人 (将来の自分を含む) が少なくともトラブルシューティング方法のヒントを得ることができるようにします。

この問題は、JDBC 接続ユーザーに追加されたライブラリに関係していました。トリガーは実際に起動されていましたが、このプログラムが別の RPG プログラム (たとえば、Program2) を呼び出すと想定された後で、RPG プログラム (たとえば、Program1) を呼び出すことを期待していたため、それに気づきませんでした。2 番目のプログラムが呼び出されているのが見えなかったので、トリガーが JDBC INSERT SQL ステートメントから起動されていないと思ったのです。

WRKACTJOB の QZDAZOINIT ジョブ ログを確認したところ、Program2 が呼び出されていないことに気付きました。これは、JDBC 接続用に構成したライブラリで見つからなかったためです。物理データ ファイル (PF) を表示できるようにライブラリを追加しただけで、RPG プログラム (PGM) は表示できず、トリガー プログラム (Program1) 内で別のプログラムを呼び出そうとしていたので、その上にプログラム ライブラリが必要でした。 JDBC 接続ユーザー。JDBC 接続プロパティで必要なすべてのライブラリを構成した後、期待どおりに機能しました。

于 2013-02-23T04:01:25.447 に答える