本帖最后由 mafeifan 于 2011-09-22 17:34:49 编辑

解决方案 »

  1.   

    给出表[USER_TYPE_LIST],[用户表]的表结构和含义,比如说积分500是1级,积分1000是2级
      

  2.   


    CREATE TABLE USER_TYPE_LIST(
    USER_INTEGRAL_TYPE NUMBER, 
    INTEGRAL_END NUMBER, 
    CAPTION VARCHAR2(30), 
    ID NUMBER
    );
    CREATE TABLE T_USER
    (NAME VARCHAR2(20), 
    INTEGRAL NUMBER, 
    TYPE NUMBER
    );
    insert into USER_TYPE_LIST(id,User_Integral_Type,Integral_End,Caption) values(1,1,50,'体验用户');
    insert into USER_TYPE_LIST(id,User_Integral_Type,Integral_End,Caption) values(2,2,100,'普通用户');
    insert into USER_TYPE_LIST(id,User_Integral_Type,Integral_End,Caption) values(3,3,200,'会员');
    insert into USER_TYPE_LIST(id,User_Integral_Type,Integral_End,Caption) values(4,4,400,'VIP');
    insert into USER_TYPE_LIST(id,User_Integral_Type,Integral_End,Caption) values(5,5,800,'银卡');
    insert into USER_TYPE_LIST(id,User_Integral_Type,Integral_End,Caption) values(6,6,1500,'白金卡');
    insert into USER_TYPE_LIST(id,User_Integral_Type,Integral_End,Caption) values(7,7,2000,'钻石卡');insert into t_user values('test',10,1);select * from USER_TYPE_LIST;
    select * from t_user;--创建触发器
    create or replace trigger updateUserType
      before update on t_user  
      for each row
    declare
      IntLevel number;
      score number;
    begin
      score:=:new.integral;--获取更新后的积分
      select max(User_Integral_Type)+1 into IntLevel from(select User_Integral_Type from USER_TYPE_LIST t where t.integral_end<score);--查询对应等级
      --dbms_output.put_line(IntLevel);
      :new.type:=IntLevel;--更新用户等级
    end updateUserType;update t_user set integral=200 where name='test';--测试
      

  3.   

    二楼的 大大 能不能把
    select max(User_Integral_Type)+1 into IntLevel from(select User_Integral_Type from USER_TYPE_LIST t where t.integral_end<score);--查询对应等级这句解释一下 看不懂耶 
    select into是啥意思