zoukankan      html  css  js  c++  java
  • MySQL生成订单号

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

     表设计:

    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 ;
    

      

  • 相关阅读:
    Learning_the_bash_Shell_Third_Edition 15/n
    Learning_the_bash_Shell_Third_Edition 14/n
    Learning_the_bash_Shell_Third_Edition 13/n
    cvb源码分析,resful规范,drf,drf序列化组件,95
    rest_framework登录组件,权限组件
    forms组件
    分页器
    基于ajax提交数据
    回顾django内容
    多表操作
  • 原文地址:https://www.cnblogs.com/CarlBlogs/p/7405474.html
Copyright © 2011-2022 走看看