如何获取在 IBM ISeries DB2 SQL 触发器的 SQL 触发器程序中已触发触发器的文件成员和库

问题描述 投票:0回答:1

有没有办法获取在 SQL 触发器程序中已触发触发器的文件成员和库?

基本上我想获取 RPGLE 触发程序中可用的 Parm1(触发缓冲区字段描述)。

01  dcl-ds Parm1 ;
02    File char(10) ;            // File name
03    Library char(10) ; **      // Library file is in
04    Member char(10)** ;       // Member name**
05    TriggerEvent char(1) ;  // Trg event 1=Add 2=Delete 3=Change 
06    TriggerTime char(1) ;      // Trigger time
07    CommitLock char(1) ;       // Commit lock level
08    *n char(3) ;               // Reserved
09    CCSID int(10) ;            // CCSID
10    *n char(8) ;               // Reserved

我的示例 SQL 触发器程序:

01  CREATE OR REPLACE TRIGGER TRGTESTFILE
02  AFTER INSERT OR DELETE OR UPDATE ON MYLIB.TESTFILE1
03  REFERENCING NEW ROW AS N OLD ROW AS O
04  FOR EACH ROW MODE DB2ROW
05  BEGIN
06    DECLARE TSTAMP TIMESTAMP ;

07    IF INSERTING THEN
08      INSERT INTO MYLIB.OUTFILE
               VALUES(CURRENT TIMESTAMP,
                      JOB_NAME,
                      'I',
                      N.ID,
                      N.NAME) ;
09    END IF ;

谢谢

我正在尝试获取已触发触发器的文件成员名称和库。

sql triggers db2 ibm-midrange rpgle
1个回答
0
投票

如果我理解你的问题,你有两种方法来记录你的触发器。

  • 第一种方法是为每个触发器执行并插入表中,这意味着 每个触发器程序都必须写入您的表中。
  • 第二个是创建一个主程序,调用正确的触发器, 根据DS信息,同时写入日志。每个文件都必须使用此程序作为触发器。

之后就没有办法得到名字了。 IBM 仅向您提供具有触发器的文件列表:

SELECT * FROM QSYS2/SYSTRIGGER

不幸的是,没有 TRIGGER EVENT LOG 表。

© www.soinside.com 2019 - 2024. All rights reserved.