4、显示的完成
只需履行select * from forum order by rootid+id-sign(rootid)*id
desc,ordernum,然后联合deep便可完成树状的显示。
5、详细完成办法(以存储进程为例)
加贴存储进程:(省略注册用户检测和积分局部内容)
CREATE PROCEDURE [add] @keyid int,@message varchar(50)
OUTPUT―――keyid为答复的贴子id号,假如是新贴则为0,@message为失足信息
AS
IF (@keyid=0)
INSERT INTO forum (rootid,deep,ordernum,……) values(0,0,0,……)
ELSE
BEGIN
DECLARE @rootid int,@id int,@deep int,@begnum float,@endnum
float,@ordernum float
SELECT @rootid=0,@id=0,@deep=0,@begnum=0,@endnum=0,@ordernum=0
SELECT @rootid=rootid,@id=id,@begnum=ordernum,@deep=deep from
forum where id=@keyid
IF (@id=0)
BEGIN
SELECT @message='要答复的贴子已被删除!'
return
END
ELSE
BEGIN
IF (@rootid=0) SELECT @rootid=@id――答复的是根贴,取其id为新加贴的rootid
SELECT @endnum=ordernum where rootid=@rootid and
ordernum>@begnum order by ordernum
IF (@endnum=0)
SELECT @ordernum=@begnum+65536 ――答复的是最初一贴
ELSE
SELECT @ordernum=(@begnum+@endnum)/2――关头,取排序基数中值
INSERT into forum (rootid,deep,ordernum,……)
values(@rootid,@deep+1,@ordernum,……)
END
END
Select @message='胜利'
return