本帖最后由 ivorycoast 于 2009-11-22 18:50:05 编辑

解决方案 »

  1.   

    插入一条记录时 不包括fenzhi字段吧?
      

  2.   


    不包括。
    例如: 插入 table1(xuhao,leibie) values(0001,'军事');得到的分值是 3(分值通过触发器自动获取)
      

  3.   

    fenzhi(number型)字段的作用是用来统计该行记录的总分数,其值是通过触发器自动计算并获取的(例:有记录+1分,军事+2分,总共应为3分) 
      

  4.   

    xuhao  leibie    fenzhi 
    0001    军事      3 
    0002    政治      2 那这两条记录中的分值是怎么来的?
    是不是表里还有记录没全都列出来
      

  5.   

    create or replace trigger tri
      before insert on table1  
      for each row
    begin
      -- 军事:3  政治:2  其它:1 --
      if :new.leibie = '军事' then
         select 3 into :new.fenzhi from dual;
      elsif :old.leibie = '政治' then
         select 2 into :new.fenzhi from dual;
      else
         select 1 into :new.fenzhi from dual;
      end if;
    end tri;
      

  6.   

    上面的有点问题
    create or replace trigger tri
       before insert on table1
       for each row
     begin
       -- 军事:3  政治:2  其它:1 --
       if :new.leibie = '军事' then
          select 3 into :new.fenzhi from dual;
       elsif :new.leibie = '政治' then
          select 2 into :new.fenzhi from dual;
       else
          select 1 into :new.fenzhi from dual;
       end if;
     end tri;
      

  7.   

    如果插入的记录是2个字段(leibie,jibie)该怎么写,分值仍是通过触发器自动得到值
    类别  军事 分值+2   政治  分值+1
    级别  高   分值+2    中    分值+1  leibie   jibie    fenzhi
        军事       高         4      --军事+2  高+2
         政治       中         2       --政治+1  中+1
      

  8.   

    create or replace trigger TG_NAME
    before insert on table1
    for each row
    begin
    :new.fenzhi:=1;
    if :new.leibie='军事' then
      :new.fenzhi:=:new.fenzhi+2;
    elsif :new.leibie='政治' then
      :new.fenzhi:=:new.fenzhi+1;
    end if;if :new.jibie='高' then
      :new.fenzhi:=:new.fenzhi+2;
    elsif :new.jibie='中' then
      :new.fenzhi:=:new.fenzhi+1;
    end if;
    end;
      

  9.   

    楼上的,为什么要:new.fenzhi:=1给他一个初值
      

  10.   

    create or replace trigger TG_NAME 
    before insert on table1 
    for each row 
    begin 
    if :new.leibie='军事' then 
      :new.fenzhi:=:new.fenzhi+2; 
    elsif :new.leibie='政治' then 
      :new.fenzhi:=:new.fenzhi+1; 
    elsif :new.jibie='高' then 
      :new.fenzhi:=:new.fenzhi+2; 
    elsif :new.jibie='中' then 
      :new.fenzhi:=:new.fenzhi+1; 
    elsif :new.fenzhi:=:new.fenzhi+1;
    end if; 
    end;