估计你其它什么地方有TRIGGER!

解决方案 »

  1.   

    CREATE OR REPLACE TRIGGER AA_TEMP  
    before DELETE ON AA 
    FOR EACH ROW
    declare
    total number;
    n number;
    BEGIN
    total:=(select count(1) from aa);
    n:=(select count(1) from aa where A=:old.a);
    UPDATE BB SET B=total-n;
    END;  
    /
      

  2.   

    oracle 中,行级触发器中不允许读取或修改变化表,
    不允许修改或读取触发表的限制表的主键,唯一值键和外键。变化表就是触发你的触发器的语句产生的变化的表。这里也就是a表
    限制表就是对a表而言受了某些限制的比如用a表的主键做外键的表。你的语句犯了第一个错误。对a表进行了读取SELECT COUNT(*) FROM AA可以试着用语句级触发器铙过这个限制。《ORACLE8—SQL高级指南》中触发器章有讲。去找找下载来看看吧
      

  3.   

    http://61.144.28.248/d6i/bbs_armok01/bbs_list.jsp
    Oracle Developer 开发者论坛http://61.144.28.248/d6i/bbs_armok01/bbs_content.jsp?bbsSerialNo=7722&bbsPageNo=1
    這裡東東很全的
      

  4.   

    我是用替代触发解决问题的老板觉得不爽,要我换成别的方式;
    --washy781231(木木) :兄弟
        请问语句级的触发是不是改成如下就可
    CREATE OR REPLACE TRIGGER AA_TEMP  
    AFTER DELETE ON AA 
    BEGIN
    UPDATE BB SET B=(SELECT COUNT(*) FROM AA);
    END;  
    /我对Oracle接触时间不长,请问同志们 有哪些经典资料和技巧呀!