同学问我,我不懂oracle,故发贴求之。
数据库中有一个表为班级信息总览
字段如下 banjibh number  –班级编号
         banjimc varchar2(36) –班级名称
         banjirs number  -- 班级人数    
编写触发器,实现在班级信息表中插入/删除一条记录时,更新 班级信息总览 表的 班级人数,没有则插入,有则更新,当班级信息表中删除一条,将该班级的人数减1。 

解决方案 »

  1.   

    create trigger test 
    after insert or delete
    on classinformation
    for each row
    declare
       v_cnt number := 0;
    begin
       select nvl(count(1)) into v_cnt from classinfoAll where banjimc = NEW.banjimc;
       if inserting then
          if v_cnt = 0 then
             insert into classinfoAll(banjibh,banjimc,banjirs) 
             values(NEW.banjibh,NEW.banjimc,1);
          else
             update classinfoAll set banjirs = banjirs +1 where banjimc = NEW.banjimc;
          end if;
       elsif deleting then
          update classinfoAll set banjirs = banjirs +1 where banjimc = NEW.banjimc;
       end if;
    end test;大致如此,没有测试