MySQL生成-单据号不重复

需求生成一个单据编号

单据编号结构: “单据类型” + “日期” + “流水号”

例子 : GD201605230000007

代码:

DELIMITER $$

CREATE

    PROCEDURE `yunzhi`.`auto_no`(IN billType CHAR(2))
    
    BEGIN
    DECLARE v_timestr VARCHAR(8);
    DECLARE v_cnt INT;
    DECLARE rowcount BIGINT;
    
    -- 当前日期(8位短日期)
    SET v_timestr = DATE_FORMAT(NOW(), '%Y%m%d');
    SELECT CONCAT(billType,v_timestr) INTO v_timestr;
    
    SET autocommit = 0;
        UPDATE no_seq SET sn = (sn + 1) WHERE timestr = v_timestr;
        
        IF ROW_COUNT() = 0 THEN 
            INSERT INTO no_seq(timestr,sn) VALUE (v_timestr,1);
        END IF;
        
        SELECT CONCAT(v_timestr,LPAD(sn,7,0)) AS sn
        FROM no_seq WHERE timestr = v_timestr;
    COMMIT;
    END$$

DELIMITER ;

 

转载于:https://www.cnblogs.com/cbread/p/5523412.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值