因为最近做项目需要,需要使用到,自定义的不重复的自增长的订单号,在网上找了资料然后又加入了自己的修改,做成的mysql生成订单号的存储过程。
drop PROCEDURE pp;
create procedure PROC_GET_NO (tname varchar(50),cname VARCHAR(50),prefix VARCHAR(20))
begin
#最终生成的订单号
declare order_sn VARCHAR(20);
#当前系统中的订单号
declare prev VARCHAR(15);
#旧的日期
declare prevdatetime VARCHAR(15);
#截取到的编号
declare sn BIGINT(15);
#当前的系统时间
declare nowdate VARCHAR(15);
# 获得当天的最后一条记录编号 判断数据库中的创建日期是否大于当前日期 也就等于是是否是当天的单据
set @pre = prefix;
set @na=tname;
set @cna = cname;
set @sql_text:='select MAX(';
set @sql_text := CONCAT(@sql_text,@cna,') into @recordcount from ');
set @whe :=' WHERE create_date > CURRENT_DATE()';
set @sql_text:=concat(@sql_text,@na,@whe);
prepare stmt from @sql_text;
execute stmt;
set prev = @recordcount;
#截取日期
select SUBSTR(prev FROM 2 FOR 9) into prevdatetime;
#截取编号
select RIGHT(prev,5) into sn;
#获得当前的时间 使用now()函数 获得的格式是2014-05-28 11:20:18 然后在获取自己想要的数据
select DATE_FORMAT(NOW(),'%Y%m%d') into nowdate;
#判断最后一条记录是否为空
if isnull(prev) then
select concat(@pre,nowdate,'00001') into order_sn;
#return order_sn;
elseif nowdate = prevdatetime then
select concat(@pre,nowdate,'00001') into order_sn;
#return order_sn;
else
select concat(@pre,prevdatetime,LPAD((sn+1),4,'0'))into order_sn;
#return order_sn;
end if;
select order_sn;
end;
CALL pp('quotation','quotation_no','O')
分享到:
相关推荐
借鉴大牛经验,mysql 设置自增长,时间字段。
mysql取得自动增长的主键值,mysql组织推荐的一种安全的方法!
利用mysql sql 来实现日期自动增或者自动减的。同时也写对mybatis使用该sql的一些踩坑写出来了。
mysql创建流水号,以前也一直不知道怎么写,最后我知道了,然后我保存了下来
mysql用触发器实现char类型主键自增长
实现mysql按时间分区方式自动创建与删除分区,包括创建/删除日志记录,通过存储过程与事件联合实现,自动创建数量与删除数量可动态配置
这个是用mysql写的存储过程,搭配里面一张数据表使用,达到高并发情况下获得唯一订单号的目的;原理:按照一定规则生成订单号后,把订单号插入数据表后,再返回给用户,由于数据表设置了主键,也就是当数据表中存在...
用存储过程实现了MySQL数据库分区表的自动创建和自动删除功能。亲测有效。希望有用。
Mysql 创建用户和表 Mysql 创建用户和表是数据库管理系统中的重要组成部分。创建用户和表是数据管理的基础,理解创建用户和表的方法对数据库管理至关重要。本文将详细介绍 Mysql 创建用户和表的方法。 一、创建...
大批数据,根据字段名称创建独立的表。。。。。。。。。。。。。。。。。。。。。。。。。。。
国开作业《MySQL数据库应用》实验训练1在MySQL中创建数据库和表参考107.pdf国开作业《MySQL数据库应用》实验训练1在MySQL中创建数据库和表参考107.pdf国开作业《MySQL数据库应用》实验训练1在MySQL中创建数据库和表...
vs2008C#操作Mysql创建数据库,数据表,增、删、改数据实例。
mysql创建文档入门教程
学习mysql必看的东西 一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 还是MYSQL的,一张表有还是有ID自增主键,用JDBC insert一条...
java读取excl文件内容进行mysql自动创建表,实现了从手动创建表到自动一键式创建数据库表,大大节省了开发时间,便于程序猿进行项目开发
mysql创建用户.txt
代码复制粘贴 改下里面的参数 就可以用 而且参数 也有说明 简单易懂
在 MySQL 中创建储存过程的语法很难记,除非你经常跟储存过程打交道,原因很简单,语法不是什么小笑话。如果你通过命令行控制 MySQL,你需要记住准确的语法。一个快速示例可以很好的帮助你做到这点。在MySQL 入门...
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
Mysql中创建各种索引的语句整理 代码 添加PRIMARY KEY(主键索引) 添加UNIQUE(唯一索引) 添加INDEX(普通索引) 添加FULLTEXT(全文索引) 添加多列索引 ) mysql>ALTER TABLE `...