【问题标题】:Insert inside trigger not firing插入内部触发器不触发
【发布时间】:2020-09-07 05:56:54
【问题描述】:

嗨,我在 oracle 中有这个简单的触发器

CREATE OR REPLACE TRIGGER OCAP_CREATE_NCRB
BEFORE INSERT
ON OCAP_TBLOCAP
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
       Defect_Type    varchar2(16);
       out_           varchar2(60);
BEGIN

  Select A.DEFECT_TYPE into Defect_Type from OCAP_TBLDEFECT A where A.DEFECT_ID = :NEW.DEFECT;

   IF Defect_Type = 'C' THEN
         --Create NCRB
         
      SP_INSERTTBLD1D2(23,LPAD(:NEW.ISSUED_BY,6,'0'),0,'0','0','035823','Draft',' ',' ',34,' ',0,461,0,0,'035105',trunc(sysdate),' ','A',Lpad(:NEW.ISSUED_BY,6,'0'),Lpad(:NEW.ISSUED_BY,6,'0'),trunc(sysdate),'A',:New.BATCH_NO,out_);
      --insert action
      SP_INSERTTBLFORMYACTION(Lpad(:NEW.ISSUED_BY,6,'0'), out_, Lpad(:NEW.ISSUED_BY,6,'0'), Lpad(:NEW.ISSUED_BY,'0'), 'Draft');
      
      --Insert other affected Lots
      insert into TBLD2LOT(NCRBSERIESNO,LOTNO,CREATEDBY,CREATEDDT,SEQNO) Select (out_), A.BATCH_NO,Lpad(:NEW.ISSUED_BY,6,'0'),sysdate,(TBLD2LOTSEQ.nextval) from OCAP_OTHERBATCH A where A.OCAP_ID = :NEW.OCAP_NO;

      
      --add NCRBSeries no. to table OCAP_TBLOCAP for referencing
     Update OCAP_TBLOCAP set NCRBSERIESNO = out_ where OCAP_NO = :NEW.OCAP_NO;
      
      --Insert ocap history 
      
   END IF;
   
   
END Ocap_Create_NCRB;
/

前 2 个存储过程工作正常,但插入查询不是。 我尝试通过替换Out_:new.Ocap_no 来手动执行插入查询,它工作正常。 我的查询有问题吗?

希望有人帮我解决这个问题。

【问题讨论】:

    标签: oracle triggers oracle10g


    【解决方案1】:

    如果它不工作,那么

    from OCAP_OTHERBATCH A 
    where A.OCAP_ID = :NEW.OCAP_NO;      --> this condition is never met
    

    这意味着OCAP_OTHERBATCH 中没有任何行包含等于:NEW.OCAP_NOOCAP_ID 值。

    可能是因为字母大小写错误,CHAR 数据类型(右填充空格直到列的全长),...谁知道呢。没有表的描述和样本数据,很难猜测。

    【讨论】:

    • 它满足了我尝试选择两个表都有数据的条件
    • 正如我所说:提供测试用例 - CREATE TABLE 和 INSERT INTO 样本数据。过程无关紧要,你说它们执行成功了,所以只有INSERT的SELECT语句失败了。
    • o 我现在看到了问题,插入后表还没有数据,但是更新查询现在不起作用我尝试取消评论它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 2022-11-21
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多