日期:2014-05-18  浏览次数:20945 次

如何用sql语句实现根据用户积分自动升级用户的级别
A表存储用户的信息   字段有积分upoints,等级ugrade
B表的三个字段分别为:级别ID,   gradeid   ;用户升级所需要的积分points;对应的用户等级gradename  
如何用sql语句实现:当用户的积分达到B表的某一积分,A表中的等级字段ugrade自动修改为B表中对应的gradeid   ?
还望大虾们的指点,俺对Sql语句不是很熟悉,在下向高手们学习呀!

------解决方案--------------------
/*
Limpire:实时更新法——触发器
*/

--等级表
create table grade (gradeid int, points int, gradename varchar(10))
insert grade
select 1,0, '婴儿 ' union all
select 2,10, '少年 ' union all
select 3,20, '普通 ' union all
select 4,50, '强人 ' union all
select 5,100, '牛人 ' union all
select 6,1000, '牲口 '
--用户表
create table users (userid int,upoints int,ugrade int)
insert users
select 101,5,1
go

create trigger tr_upgrade
on users
for update
as
set nocount on
if update(upoints)
begin
update a set a.ugrade=b.gradeid from users a
join (select c.userid,gradeid=max(d.gradeid),c.ugrade from inserted c join grade d on c.upoints> =d.points group by c.userid,c.ugrade having(max(d.gradeid)) <> c.ugrade) b
on a.userid=b.userid
end
set nocount off
go

select * from users
update users set upoints=1000 where userid=101
select * from users

--删除测试
drop table grade,users