--编写排序的问题。比如 1、2、3、4、5、6这种排列号
--思路:(1)假设1变成5,那么就是1直接变5,2、3、4、5 分别减1,6不变
--(2)假设5变成3,那么5直接变成3,1、2不变,3、4减1,6不变
--(3)比如:3变成6。那么6是目标值,3是欲成为目标的值
--(4)用事务或者存储过程实现
--(5)要传的參数各自是:表名,目标值。欲成为目标的值。标识列(比如ID)
Create proc [dbo].[pro_woqu]
@ID int ,--ID值
@targetValue int ,--目标值
@wishtargetValue int,--欲成为目标的值
@tableName varchar(100)
as
begin tran
update [User] set DisplayOrder=@targetValue where ID=@ID;
if(@targetValue<@wishtargetValue)--假设5变成3,那么5直接变成3,1、2不变,3、4减1,6不变
begin
update [User]set DisplayOrder=DisplayOrder+1 where DisplayOrder>=@targetValue and DisplayOrder<@wishtargetValue and ID!=@ID and ParentID=0
end
if(@targetValue>@wishtargetValue)--3变成6。那么6是目标值。3是欲成为目标的值
begin
update [User]set DisplayOrder=DisplayOrder-1 where DisplayOrder<=@targetValue and DisplayOrder>@wishtargetValue and ID!=@ID and ParentID=0
end
if @@error<>0
begin rollback tran
return 0
end
else
begin commit tran
return 1
end
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步