在触发器中不能对本表进行操作,否则或引起死循环的.
如果你的表中STORYID是主键的话,不要用UPDATE语句
  UPDATE STORYCANDIDACY 
  SET STORYCANDIDACY.GRADE_SUM = (:NEW.GRADE_CHENC + :NEW.GRADE_ANNIE + :NEW.GRADE_LIXH + :NEW.GRADE_NINGCS)
  WHERE (STORYCANDIDACY.STORYID = :NEW.STORYID);改成为: :NEW.GRADE_SUM := :NEW.GRADE_CHENC + :NEW.GRADE_ANNIE + :NEW.GRADE_LIXH + :NEW.GRADE_NINGCS;应该达到你的要求了吧?

解决方案 »

  1.   

    CREATE OR REPLACE TRIGGER "S-DEW"."STORYCANDIDACY_UPDATE" AFTER 
        UPDATE OF GRADE_CHENC, GRADE_ANNIE, GRADE_LIXH, GRADE_NINGCS
        ON "S-DEW"."STORYCANDIDACY" 
        FOR EACH ROW
    BEGIN
      :NEW.GRADE_SUM = :NEW.GRADE_CHENC+:NEW.GRADE_ANNIE+:NEW.GRADE_LIXH+:NEW.GRADE_NINGCS;
    END;警告: 创建的触发器带有编译错误。
      

  2.   

    :NEW.GRADE_SUM =
     to 
    :NEW.GRADE_SUM :=
      

  3.   

    CREATE OR REPLACE TRIGGER "S-DEW"."STORYCANDIDACY_UPDATE" AFTER 
        UPDATE OF GRADE_CHENC, GRADE_ANNIE, GRADE_LIXH, GRADE_NINGCS
        ON "S-DEW"."STORYCANDIDACY" 
        FOR EACH ROW
    BEGIN
      :NEW.GRADE_SUM := :NEW.GRADE_CHENC + :NEW.GRADE_ANNIE + :NEW.GRADE_LIXH + :NEW.GRADE_NINGCS;
    END;ERROR 位于第 1 行:
    ORA-04084: 无法更改此触发器类型的 NEW 值
      

  4.   

    CREATE OR REPLACE TRIGGER "S-DEW"."STORYCANDIDACY_UPDATE" 
      BEFOR UPDATE OF GRADE_CHENC, GRADE_ANNIE, GRADE_LIXH, GRADE_NINGCS
      ON "S-DEW"."STORYCANDIDACY" 
      FOR EACH ROW
    BEGIN
      :NEW.GRADE_SUM := :NEW.GRADE_CHENC + :NEW.GRADE_ANNIE + :NEW.GRADE_LIXH + :NEW.GRADE_NINGCS;
    END;
      

  5.   

    改成你说的那样,却出上面的错误!我的想法是,一个表的某些字段的值发生了变化,则自动改变另几个字段的值!在MSSQL中我实现得很好的!
      

  6.   

    上面的“BEFOR”少了个“E”,好像成了!
      

  7.   

    KingSunSha(弱水三千),給留个QQ么?
    [email protected]