我一直在尝试查看AS400触发器的触发器定义,但似乎找不到帮助我这样做的命令。我可以列出触发器,创建或删除它们,但是如何查看触发器定义。
答案 0 :(得分:4)
DSPFD FILE(LIB/FILE) TYPE(*TRG)
将为您提供有关调用的程序以及触发器触发时的基本信息。
答案 1 :(得分:2)
使用iSeries Navigator深入查看“数据库”项中的连接。在相应的架构下,单击“触发器”。然后右键点击您感兴趣的触发器并选择“定义”。
查看触发器列表时,请查看'类型'列,以查看您的触发器是否是' SQL'或者'外部'。一个'外部'触发器写入HLL,如RPG,C,COBOL或其他。要查看外部定义,您需要找到用于编译的源。 DSPPGM命令可以列出程序的模块,并显示源的位置。
可以使用iNav以这种方式访问一个简单的SQL触发器定义示例:
向下钻取后,右键单击所需的触发器并选择'定义'。定义的“常规”选项卡如下所示:
SQL选项卡可以是:
此示例SQL触发器仅在运行INSERT时将消息发送到消息队列。
外部触发器将显示程序的名称。从程序说明中,您可以跟踪来源。
答案 2 :(得分:1)
TRIGGER信息可以从目录VIEW获得,就像任何其他DB2一样;即DB2 for i [" for AS400"来自OP]与其他DB2变体[LUW和for z]或其他可通过其SQL目录访问元数据和类似信息的RDBMS略有不同。
答案描述如何定位\提供TRIGGER通过iNav->数据库功能的信息只是一个特定的路径,可以从目录中获取信息;更一般地说,可以使用目录数据的SQL SELECT直接查询相同的数据。
SYSTRIGGER目录VIEW的ACTION_STATEMENT [for TEXT]列可能是OP所指的,至少在部分,作为"触发定义"。当然,TRIGGER的定义方面仅仅是有效的例程定义远远超过,包括描述动作是否在触发事件定义为之后执行的ACTION_TIMING等详细信息。 INSERT,UPDATE或INSTEAD中的任何一个。
以下文档更广泛地用于目录,具体是SYSTRIGGERS目录VIEW:
http://www.ibm.com/support/knowledgecenter/api/content/ssw_ibm_i_71/db2/rbafzcatalogtbls.htm
http://www.ibm.com/support/knowledgecenter/api/content/ssw_ibm_i_71/db2/rbafzcatsystrigger.htm
答案 3 :(得分:0)
您可以使用QSYS2.GENERATE_SQL()程序获取触发器的定义。