MySQL通过创建FUNCTION以某字段实现记录的上下移

这是一个用于在数据库中实现记录上移或下移的函数。根据传入的recordId和type(1为上移,2为下移),函数首先获取当前记录的排序值,然后检查是否有足够的相邻记录进行移动。如果满足条件,函数更新相关记录的排序值,从而实现移动,并返回1表示成功。若无法执行移动,如记录已在最前或最后,函数返回-1。
摘要由CSDN通过智能技术生成

代码实现:

CREATE FUNCTION `moveUpOrDown`(recordId int(11), type int(11)) 
RETURNS int(11)
BEGIN 
	DECLARE isExecute int(11); 
	DECLARE sort1 int(11); 
	DECLARE sort2 int(11); 
	DECLARE executeId int(11);
	SELECT sort INTO sort1 FROM 表名 WHERE id=recordId;
	IF type=1
	THEN 
		SELECT count(0) INTO isExecute FROM z_label z WHERE z.sort<sort1;
		IF isExecute=0 THEN RETURN -1;
		ELSE
			SELECT z.sort INTO sort2 FROM 表名 z WHERE z.sort<sort1 ORDER BY z.sort DESC LIMIT 1;
			SELECT z.id INTO executeId FROM 表名 z WHERE z.sort<sort1 ORDER BY z.sort DESC LIMIT 1;
			UPDATE 表名 SET sort=sort1 WHERE id=executeId;
			UPDATE 表名 SET sort=sort2 WHERE id=recordId;
			RETURN 1;
		END IF;
	ELSE
		SELECT count(0) INTO isExecute FROM 表名 z WHERE z.sort>sort1;
		IF isExecute=0 THEN RETURN -1;
		ELSE
			SELECT z.sort INTO sort2 FROM 表名 z WHERE z.sort>sort1 ORDER BY z.sort DESC LIMIT 1;
			SELECT z.id INTO executeId FROM 表名 z WHERE z.sort>sort1 ORDER BY z.sort DESC LIMIT 1;
			UPDATE 表名 SET sort=sort1 WHERE id=executeId;
			UPDATE 表名 SET sort=sort2 WHERE id=recordId;
			RETURN 1;
		END IF;
	END IF;
END

入参值:
recordId:要执行上下移操作的记录主键
type:执行类型:1-上移,2-下移

返回值:
-1:已排在最前或最末,无法执行上下移
1:执行成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值