CREATE PROCEDURE tradeinfo_add_p
@name nvarchar(50),
@fatherid int,
@ret int out
AS
set @ret = 0
declare @id int
declare @left int
declare @right int
begin tran
if (@fatherid=0)
begin
select @right=isnull(max(rightid),0) from tradeinfo
insert into tradeinfo(tradename,fatherid,leftid,rightid) values(@name,@fatherid,@right+1,@right+2)
commit tran
end
else
begin
select @left=leftid,@right=rightid from tradeinfo where tradeid=@fatherid
update tradeinfo set leftid=leftid+2,rightid=rightid+2 where leftid>@right
update tradeinfo set rightid=rightid+2 where leftid<@right and rightid>=@right
insert into tradeinfo(tradename,fatherid,leftid,rightid) values(@name,@fatherid,@right,@right+1)
commit tran
end
set @ret = @@identity
if (@@error>0)
rollback tran
GO