Join 另一个04079:触发器规范无效

Join 另一个04079:触发器规范无效,join,plsql,triggers,insert,multiple-tables,Join,Plsql,Triggers,Insert,Multiple Tables,触发器创建的语法在我看来是正确的,但我很难找到引发此错误的原因。 此触发器的目的是在源表添加了条目后填充两个不同的表。tasks表获得添加的行,然后CADP_导入和CADP_导出表仅获得从tasks表中相应列填充的非空列。同样的情况也发生在狂欢桌上。varcdesc变量位于两个连接点之外的表上。这就是定义要复制到哪一组外部表的内容 CREATE OR REPLACE TRIGGER UPDATEEXTERNAL AFTER UPDATE ON TASKS REFERENCE new

触发器创建的语法在我看来是正确的,但我很难找到引发此错误的原因。 此触发器的目的是在源表添加了条目后填充两个不同的表。tasks表获得添加的行,然后CADP_导入和CADP_导出表仅获得从tasks表中相应列填充的非空列。同样的情况也发生在狂欢桌上。varcdesc变量位于两个连接点之外的表上。这就是定义要复制到哪一组外部表的内容

CREATE OR REPLACE TRIGGER UPDATEEXTERNAL
  AFTER UPDATE
  ON TASKS
  REFERENCE new as new old as old
  FOR EACH ROW
WHEN (:new.status like 'CODE VERBATIM #%')

DECLARE
  vareid    varchar2(50);
  varcdesc  varchar2(50);

BEGIN 
  vareid := externalid;
  select c.description into varcdesc from configurations c, jobs j, tasks t
    where t.jobid = j.id
    and   j.configurationid = c.id;
  IF varcdesc = 'CADP AE and MH Convention' 
      OR varcdesc = 'CADP CM Convention' THEN
    INSERT ALL
      INTO IATINTEGRATION.CADP_IMPORT 
        (EXTERNALID,TERM,FROMSYS,PROT,TYPE,DATASET,VARNAME,BATCH,PNO) 
      VALUES
        (vareid,t.verbatim,t.REF1,t.REF2,t.REF3,t.REF4,t.REF5,t.REF6,t.REF7)

    INTO IATEINTEGRATION.CADP_EXPORT 
        (EXTERNALID,VERBATIM,FROMSYS,PROT,TYPE,DATASET,VARNAME,BATCH,PNO)
      VALUES
        (vareid,t.verbatim,t.REF1,t.REF2,t.REF3,t.REF4,t.REF5,t.REF6,t.REF7);

    ELSE IF varcdesc = 'RAVE AE and MH Convention' 
    OR varcdesc = 'RAVE CM Convention' THEN
    INSERT ALL
      INTO IATINTEGRATION.RAVE_IMPORT 
        (EXTERNALID,VERBATIM_TERM,STUDY_ID) 
      VALUES
        (vareid,t.verbatim,t.REF1)
      INTO IATINTEGRATION.RAVE_EXPORT 
        (EXTERNALID,VERBATIM_TERM,STUDY_ID) 
      VALUES
        (vareid,t.verbatim,t.REF1);
     END IF;
     END;
试试这个:

CREATE OR REPLACE TRIGGER UPDATEEXTERNAL
  AFTER UPDATE
  ON TASKS
  REFERENCE new as t old as old
  FOR EACH ROW
WHEN (:new.status like 'CODE VERBATIM #%')

DECLARE
  vareid    varchar2(50);
  varcdesc  varchar2(50);

BEGIN 
  vareid := externalid;
  select c.description into varcdesc from configurations c, jobs j, tasks tsk
    where tsk.jobid = j.id
    and   j.configurationid = c.id;
  IF varcdesc = 'CADP AE and MH Convention' 
      OR varcdesc = 'CADP CM Convention' THEN
    INSERT ALL
      INTO IATINTEGRATION.CADP_IMPORT 
        (EXTERNALID,TERM,FROMSYS,PROT,TYPE,DATASET,VARNAME,BATCH,PNO) 
      VALUES
        (vareid,t.verbatim,t.REF1,t.REF2,t.REF3,t.REF4,t.REF5,t.REF6,t.REF7)

    INTO IATEINTEGRATION.CADP_EXPORT 
        (EXTERNALID,VERBATIM,FROMSYS,PROT,TYPE,DATASET,VARNAME,BATCH,PNO)
      VALUES
        (vareid,t.verbatim,t.REF1,t.REF2,t.REF3,t.REF4,t.REF5,t.REF6,t.REF7);

    ELSE IF varcdesc = 'RAVE AE and MH Convention' 
    OR varcdesc = 'RAVE CM Convention' THEN
    INSERT ALL
      INTO IATINTEGRATION.RAVE_IMPORT 
        (EXTERNALID,VERBATIM_TERM,STUDY_ID) 
      VALUES
        (vareid,t.verbatim,t.REF1)
      INTO IATINTEGRATION.RAVE_EXPORT 
        (EXTERNALID,VERBATIM_TERM,STUDY_ID) 
      VALUES
        (vareid,t.verbatim,t.REF1);
     END IF;
     END;

为什么在插入中引用
t.
列?这仅适用于
INSERT。。。选择
,而不是为
插入。。。值
1。