我有A,B两表。A表的ID是自动增长。触发器如下:CREATE OR REPLACE TRIGGER T_ClientData_secure  --触发器
AFTER DELETE OR INSERT 
ON A
REFERENCING NEW AS New OLD AS Old 
FOR EACH ROW
BEGIN 
if inserting then                           --当插入A表时,自动将A表的ID的值插入给B表的USERID
insert into B(USERID) values(:New.ID); 
end if; 
 END T_ClientData_secure;
/
希望实现对A表进行插入时,自动将A表的ID(自动增长列)插入到B表的USERID中。
现在报出如下问题:触发器无效且未通过重新验证
请教这是怎么一回事?

解决方案 »

  1.   

    自动增长列?sequence? 
    insert into B(USERID) values(sequence.CURRVAL); 
    show error,看下错误代码是什么??
      

  2.   

    自动增长列?sequence?  
    insert into B(USERID) values(sequence.CURRVAL);  
    show error,看下错误代码是什么??
    ===============================
    A表的ID建立了一个触发器让它自动增长,代码如下:CREATE OR REPLACE TRIGGER clientdata_FOR_AUTOINC   before insert on A
       for each row
    declare begin 
       select clientData_autoInc.nextval into:new.ID from dual;
    end clientdata_FOR_AUTOINC;
    /
    这就是A表ID的触发器,让它自动增长。
    错误代码是:ORA-04098
      

  3.   

    Cause: A trigger was attempted to be retrieved for execution and was found to be invalid. This also means that compilation/authorization failed for the trigger.
    =======================
    原因:试图将触发为执行检索,被认为是无效的。这也意味着,汇编/授权触发失败。
      

  4.   

    CREATE OR REPLACE TRIGGER clientdata_FOR_AUTOINC   before insert on A
       for each row
    declare begin 
       select clientData_autoInc.nextval into:new.ID from dual;
    end clientdata_FOR_AUTOINC;
    /
    不明白,.为什么要建立这个触发器?序列本身就是自动增长的啊