在我的OS/400v6.x系统中,我使用ADDPFTRG命令为物理文件(DB2表)创建了AFTER INSERT触发器,每当我在RPG程序上执行WRITE命令或从STRSQL中执行INSERT语句时,该触发器都会正确触发,但当我使用JT400(JTOpen) JDBC驱动程序从Java程序执行INSERT语句时,触发器不会被触发。
在这两个场景中(从OS400和从Java),记录都被成功插入,但是只有在以OS400方式插入记录时,触发器才会触发。
我在IBM redbooks、JTOpen forums和谷歌上搜索了所有可能与我的案件有关的信息,但什么也没有找到。
遗憾的是,由于JT400 jar没有版本号,我不知道我的版本是否已过时,也没有机会尝试JTOpen页面中的最新版本。
有没有什么技术限制或库错误阻止我从Java/JT400中触发DB2触发器?
发布于 2013-02-23 12:01:25
我解决了我的问题,并将解决方案张贴出来,这样任何其他有类似问题的人(包括我未来的自己)至少可以得到一个如何解决它的提示。
这个问题与添加到JDBC连接用户的库有关。触发器实际上被触发了,但我没有注意到它,因为我以为它会调用一个RPG程序(比如说,Program1),在这个程序被建议调用另一个RPG程序(比如,Program2)之后。我看不到正在调用的第二个程序,所以我认为我的触发器不是从JDBC INSERT SQL语句触发的。
当我在WRKACTJOB中检查QZDAZOINIT作业日志时,我注意到我的Program2没有被调用,因为在我为JDBC连接配置的库中找不到它。我只是添加库,以便能够看到物理数据文件(PF),但不能看到RPG程序(PGM),并且在我的触发器程序(Program1)中,我试图调用另一个触发器程序,因此我需要在该JDBC connection用户上拥有programs库。在JDBC连接属性中配置了所有必需库之后,它就可以正常工作了。
发布于 2016-07-07 05:49:13
库列表不是唯一的问题。您可能需要关注ADDPFTRG命令的"Threadsafe“和"Multithreaded job action”参数。
ADDPFTRG ...THDSAFE(*YES) MLTTHDACN(*RUN)
https://stackoverflow.com/questions/11788192
复制相似问题