当前位置: 首页 > 知识库问答 >
问题:

从Java/JT400 SQL语句触发DB2/OS/400触发器

白浩荡
2023-03-14

在我的OS/400V6中。x系统我使用ADDPFTRG命令为物理文件(DB2表)创建了一个插入后触发器,每当我在RPG IV程序上执行写命令或从STRSQL生成INSERT语句时,该命令都会正确触发,但当我使用JT400(JTOpen)JDBC驱动程序从Java程序执行INSERT语句时,触发器不会触发。

在这两种情况下(从OS400和从Java),都会成功插入记录,但只有从OS400插入记录时才会触发触发器。

我在IBM红皮书、JTOpen论坛和谷歌上搜索过任何可能与我的案件有关的东西,但什么也没找到。

遗憾的是,由于JT400 jar没有版本号,我无法判断我的版本是否过时,也没有机会从JTOpen页面尝试leatest。

是否有任何技术限制或库错误阻止我从Java/JT400触发DB2触发器?

共有2个答案

邵兴庆
2023-03-14

库列表不是唯一的问题。您可能需要关心ADDPFTRG命令的“线程安全”和“多线程作业操作”参数。

ADDPFTRG。。。。THDSAFE(*是)MLTTHDACN(*运行)

西门逸仙
2023-03-14

我解决了我的问题,并将发布解决方案,这样其他任何有类似问题的人(包括我未来的自己)至少可以得到如何解决问题的提示。

这个问题与添加到JDBC连接用户的库有关。触发器实际上被触发了,但是我没有注意到它,因为我期望它在这个程序被设置为调用另一个RPG程序(比如,编程2)之后调用一个RPG程序(比如,编程1)。我看不到正在调用的第二个程序,所以这就是为什么我认为我的触发器没有从JDBC INSERTSQL语句中触发。

当我检查WRKACTJOB中的QZDAZOINIT作业日志时,我无法确定我的程序2没有被调用,因为在我为JDBC连接配置的库中找不到它。我只添加了能够看到物理数据文件(PF)的库,但不能看到RPG程序(PGM),在我的触发程序(编程1)中,我试图调用另一个程序,所以我需要在JDBC连接用户上拥有程序库。在我配置了JDBC连接属性中的所有必要库后,它按预期工作。

 类似资料:
  • 问题内容: 我想创建一个类似于此的SQLite触发器: 所以基本上当我这样做时: 第一个将产生两个新记录(在表和中),而第二个将失败并且根本不产生任何记录。是否可以通过触发器执行此操作? 我阅读了文档,但是除了没有完全理解之外,我没有看到实现此目的的方法。 PS :我知道我可以采取其他几种方法来获取唯一的电子邮件列表,但这不是这个问题的重点。如果我可以在触发器内执行此检查/中止操作,那真的可以简化

  • 我有一个脚本,当只有某些工作表打开时,我想在打开时运行它,但在绑定脚本的电子表格中没有其他工作表。所需的所有工作表的名称都为“代理报告-‘NameOfAgent’”。每个代理报告中还包含某些单元格,可用于IF条件语句。从逻辑上讲,我希望: 如果活动工作表的名称包含“代理报告”- 或者,如果处于活动工作表单元格A2==“角色”- 谢谢你的帮助。

  • 在“name=new.user_name”后面发现意外的标记“end-of-statement”。预期的令牌可能包括:“”..sqlcode=-104,sqlstate=42601,driver=4.9.78 SQL code:-104,SQL state:42601

  • 我试图创建一个触发器,将新插入和/或更新的记录从一个表复制到该表的历史版本。其目的是在每次插入和/或更新表中的记录时保留一条记录。 这是我拥有的创建触发器语句语法,遵循IBMDb2触发器站点。 我收到的错误是: [代码:-104,SQL状态: 42601]在N.LIFECYCLE_STATUS)之后发现了一个意外的令牌END-OF-STATEMENT。预期的令牌可能包括:""... SQLCODE

  • 问题内容: 如果MySQL触发器中有多个if语句,那么最佳方法是什么? 目前,我的SQL如下所示: 乍看之下,这似乎行得通。但是,我注意到,当多个(else)if语句为true时,仅第一个语句被执行(例如,就像在PHP中一样)。 我如何只使用多个if,而不必是elseif,以便执行多于1条语句?用相同的动作创建多个触发器是不可能的,至少phpMyAdmin所示。将多个if置于一个触发器中会导致错误

  • 问题内容: 我的整个项目都使用(Bluebird)Promises,但是有一个使用EventEmitter的特定库。 我想要实现以下目标: 我在Promises链中读了EventEmitter的答案。这给了我一种执行’connect’事件的回调的方法。这是我到目前为止所到之处 现在如何进一步链接“ eventB”? 问题答案: 我假设您想为每个事件做不同的事情。即使由的动作触发,您也可以将其视为另