Plsql 触发器问题-仅为最后一行触发

Plsql 触发器问题-仅为最后一行触发,plsql,oracle11g,Plsql,Oracle11g,我有下面的触发器定义,问题是它只在最后一行触发,这是更新的,而不是在前几行 CREATE OR REPLACE TRIGGER APPS.cx_iby_trxn_summary_au AFTER UPDATE ON ar.ar_receivable_applications_all REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW WHEN ( NEW.APPLIED_CUSTOMER_TRX_ID IS NOT NULL AND NEW.STATUS

我有下面的触发器定义,问题是它只在最后一行触发,这是更新的,而不是在前几行

CREATE OR REPLACE TRIGGER APPS.cx_iby_trxn_summary_au
AFTER UPDATE
ON ar.ar_receivable_applications_all
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
WHEN (
NEW.APPLIED_CUSTOMER_TRX_ID IS NOT NULL AND
NEW.STATUS = 'APP' AND
NEW.DISPLAY = 'Y'
  )
DECLARE 
   vn_cash_receipt_id  NUMBER := -1;  
BEGIN 

insert into cx_log values('Cash Receipt :' || :NEW.RECEIVABLE_APPLICATION_ID);

BEGIN

    SELECT acra.cash_receipt_id
      INTO vn_cash_receipt_id
      FROM ar_cash_receipts_all acra,
           iby_trxn_summaries_all itsa              
     WHERE     acra.cash_receipt_id = :NEW.CASH_RECEIPT_ID
           AND acra.receipt_number LIKE 'IEX_%'
           AND acra.payment_trxn_extension_id IS NOT NULL
           AND itsa.initiator_extension_id = acra.payment_trxn_extension_id
           AND itsa.reqtype = 'ORAPMTREQ'
           AND itsa.instrtype = 'CREDITCARD'
           AND itsa.status = 0;

EXCEPTION
    WHEN NO_DATA_FOUND THEN
        insert into cx_log values('10 NODATAFOUND:' || dbms_utility.format_error_backtrace);
    WHEN OTHERS THEN 
        insert into cx_log values('20 Exception:' || dbms_utility.format_error_backtrace);
END; 


  IF vn_cash_receipt_id > 0 THEN    

   INSERT INTO cx_log values('Cash Receipt ID:' || :NEW.CASH_RECEIPT_ID
    || '--Customer TrxId:' || :NEW.APPLIED_CUSTOMER_TRX_ID
    || '--p_line_amount:' || :NEW.AMOUNT_APPLIED
    || '--p_tax:' || :NEW.TAX_APPLIED
    || '--p_freight:' || :NEW.FREIGHT_APPLIED);

  END IF;

END;
/

Table Structure: 
  ar_cash_receipts_all 
     - ar_receivable_applications_all

问题是,当有多行时,最后一个insert语句只调用一次。ar\u cash\u receipts\u all中的一行应该在触发触发器之前就存在,因为该表是父表,但由于某些原因,下面的查询sql没有找到“vn\u cash\u receipts\u id”。有没有关于为什么找不到第一行的想法?

问题陈述没有意义。当条件时,最后一行是唯一满足条件的行,或者触发器实际为插入的每一行触发。也许您的查询没有返回您期望的数据。如果没有一个可复制的测试用例,任何人都很难猜测为什么会这样。@JustinCave就像你提到的,我的查询不是在iby_trxn_summaries_all中找到行,但是如果ar_received_applications_all表获得一个新值作为'APP',它应该在iby_trxn_summaries_all表中有一行吗?我们可以追踪它为什么不这样做吗?我只需要浏览其他表中存在的数据,记录触发器看到的内容,找出哪个表没有您期望的数据。@谢谢。如果是这样的话。你能结束这个问题吗?我可以投票结束。你应该能够在不等待额外投票的情况下结束自己的问题。