bbs论坛数据库设计过程中遇到的问题,请高手解答,谢谢

要求实现主帖和回帖的,更新对应主帖的信息,点击率加1,更新对应主帖的信息,回复数量加1,为什么发帖表的(也就是主帖表的)回复数量和主帖点击率都没有增加啊?还都是null啊,没变,以下是我写的代码哪里错了?


--发主帖:心酸果冻在.Net技术版块发帖:怯怯的问:什么是.Net啊?微软的.Net广告超过半个北京城啊...
set nocount on
go          --不显示影响行数
declare @userid varchar(10),@sid int    --定义变量存放用户编号和版块编号
select @userid=uid from bbsusers where uname='心酸果冻'    --获取心酸果冻的用户编号
select @sid=sid from bbssection where sname like '%.NET%'     --获取.Net版块的编号
                                                                                --注意提示tid不能为空时,解决方法:bbstopic表中,修改表,把tid设置为标识列
insert into bbstopic(tsid,tuid,tface,ttopic,tcontents)                                          --插入主贴表
values(@sid,@userid,'3','什么是.Net啊?','微软的.Net广告超过半个北京城啊')      
--更新版块表:.Net技术版块主帖数+1
update bbssection set stopiccount=stopiccount +1 where sid=@sid
--更新用户的积分:如果是新主题,则积分增加100,否则增加50
if not exists(select * from bbstopic where ttopic like '什么是.Net啊?' and tuid<>@userid)
update bbsusers set upoint=upoint+100 where uid=@userid
else
update bbsusers set upoint=upoint+50 where uid=@userid
--更新用户的积分后,更新相应的级别(星级)
update bbsusers
set uclass=case
when upoint < 500 then 1
when upoint between 500 and 1000 then 2
when upoint between 1001 and 2000 then 3
when upoint between 2001 and 4000 then 4
when upoint between 4001 and 5000 then 5
else      6
end
where uid=@userid
--对外公告心酸果冻的发帖情况
select '发帖作者'='心酸果冻','发帖时间'=convert(varchar(10),ttime,111),'主题'=ttopic,'内容'=tcontents from bbstopic
where tid=@@identity
--显示目前的最新排名
select '昵称'=uname ,'星级'=case    --case表达式,用于计算多个条件并为每个条件返回单个值,根据分数显示用户的等级(星级)
when uclass=0 then ' '
when uclass=1 then '★'
when uclass=2 then '★★'
when uclass=3 then '★★★'
when uclass=4 then '★★★★'
when uclass=5 then '★★★★★'
else                           '★★★★★★'
end
,'积分'=upoint  from bbsusers
go                     
---------------------------------------------------------------------------------------------------------------------------------------------
--回复主帖:可卡因回复主贴“什么是.NET啊?”,笑呵呵的回复道'.NET是微软力推的企业级信息网络共享平台'
set nocount on      --不显示影响行数
go
declare @userid varchar(10),@sid int,@tid int                --定义变量存放用户编号和版块编号和帖子变量
select @userid=uid from bbsusers where uname='可卡因'        --获取可卡因的用户编号
select @sid=sid from bbssection where sname like '%.NET%'    --获取.Net版块的编号
select @tid=tid from bbstopic where ttopic like '%什么是.Net啊?%'    --获取主帖编号
alter table bbsreply alter column rcontents varchar(50)   --注意:若提示错误:‘将截断字符串或二进制数据。语句已终止’解决办法:bbsreply表中,修改数据库字段大小:rcontents,varchar(50)
                                                                                         --注意:提示rid不能为空时,解决方法:bbsreply表中,修改表,把rid设置为标识列
insert into bbsreply(rsid,ruid,rface,rtid,rcontents)        
values(@sid,@userid,'2',@tid,'.Net是微软力推的企业级信息网络共享平台')   
if (select treplycount from bbstopic where tid=@tid )=0    --如果是第一个回帖,加100分,否则加50分
update bbsusers set upoint =upoint+100 where uid=@userid
else
update bbsusers set upoint=upoint+50 where uid=@userid
--更新用户的积分后,更新相应的级别
update bbsusers set uclass=case
when upoint < 500 then 1
when upoint between 500 and 1000 then 2
when upoint between 1001 and 2000 then 3
when upoint between 2001 and 4000 then 4
when upoint between 4001 and 5000 then 5
else      6
end
where uid=@userid

update bbstopic set treplycount=treplycount+1where tid=@tid      --更新对应主帖的信息,回复数量加1
update bbstopic set tclickcount=tclickcount+1where tid=@tid       --更新对应主帖的信息,点击率加1
update bbssection set sclickcount=sclickcount+1where sid=@sid   --更新对应版块的信息,点击率加1
--发布主帖和跟帖--
select '主帖作者'='心酸果冻','发帖时间'=convert(varchar(10),ttime,111),'主题'=ttopic,'内容'=tcontents from bbstopic
where tid=@tid
select '回帖作者'='可卡因','回帖时间'=convert(varchar(10),rtime,111),'版块'=rsid,'主帖'=rtid,'回帖内容'=rcontents from bbsreply
where rtid=@tid
  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏作者

snowyrain1119

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值