mysql 单号_MySQL生成订单号

本文介绍了通过创建自定义MySQL函数来生成订单号的方法。首先展示了相关表的设计,然后详细解释了函数的实现过程,该函数会根据日期和自增序列生成带有前缀的订单号。
摘要由CSDN通过智能技术生成

生成订单号有很多种方式,下面介绍一种自定义函数的方式生产订单号的方式。

表设计:

1ecd037018d13abeca0b690ebed410f3.png

CREATE TABLE `t_bizserial` (

`tagid` int(11) NOT NULL COMMENT '识别号',

`tradeday` varchar(6) NOT NULL COMMENT '当前交易日',

`maxbizno` int(11) NOT NULL COMMENT '当前业务号',

`startno` int(11) NOT NULL COMMENT '当前业务号',

`prefix` varchar(2) NOT NULL COMMENT '前缀',

PRIMARY KEY (`tagid`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8

函数:

DELIMITER $$

USE `db_shoping`$$

DROP FUNCTION IF EXISTS `f_getorderno`$$

CREATE DEFINER=`db_shoping`@`%` FUNCTION `f_getorderno`(p_tagid TINYINT) RETURNS VARCHAR(20) CHARSET utf8

MODIFIES SQL DATA

BEGIN

DECLARE v_tradeday VARCHAR(6);

DECLARE v_curday VARCHAR(6);

DECLARE v_prefix VARCHAR(2);

SET v_curday = RIGHT(DATE_FORMAT(CURDATE(),'%Y%m%d'),6);

SELECT `tradeday`,prefix INTO v_tradeday,v_prefix FROM t_bizserial WHERE tagid = p_tagid;

IF (v_curday <> v_tradeday) THEN

UPDATE t_bizserial SET

`tradeday` = v_curday,

`maxbizno` = `startno`

WHERE tagid = p_tagid;

END IF;

UPDATE t_bizserial SET maxbizno=1+@mno:=maxbizno

WHERE tagid=p_tagid;

RETURN CONCAT(v_prefix,RIGHT(DATE_FORMAT(CURDATE(),'%Y%m%d'),6),LPAD(@mno,8,'0'));

END$$

DELIMITER ;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值