关注:你把deleting,updating改为:DELETING 和UPDATING 试试

解决方案 »

  1.   

    create or replace trigger set_class_by_dept
    after delete or update on dept
    for each rowbeginif deleting then
    delete from class where
    院系= :old.deptname;
    elsif updating then

    update class set 院系 = :new.deptname where trim(院系) = :old.deptname;
    end if;
    end;
      

  2.   

    or try:
    create or replace trigger set_class_by_dept
    after delete or update on dept
    for each rowbeginif deleting then
    delete from class where
    院系= :old.deptname;
    elsif updating then

    update class set 院系 = :new.deptname where trim(院系) = trim(:old.deptname);
    end if;
    end;
      

  3.   

    if逻辑判断语句没有问题,oracle本来就不区分大小写,现在的问题是无法对where后面的条件进行判断。
      

  4.   

    有可能是trim()的问题,回去试试
      

  5.   

    我来说一句:在触发器在after以后是找不到关键词的,所以应该修改成before,至于trim的使用应该说是比较严谨的.祝好运.
      

  6.   

    我的意思是delete触发最好做在之前(before),update触发倒是可以根据实际情况再判断。
      

  7.   

    create or replace trigger set_class_by_dept
    before delete or update on dept
    for each rowbeginif deleting then
       delete from class where 院系= :old.deptname;
    elsif updating then
       update class set 院系 = :new.deptname where 院系 = :old.deptname;
    end if;
    end;