文档章节

mysql 时间+序列号生成id

逍遥丶蓝枫
 逍遥丶蓝枫
发布于 2017/06/20 11:35
字数 368
阅读 93
收藏 0

1.首先,在数据库中建立一个递增索引表,用于保存递增的六位序列号,附上建表语句,插入一条数据。 注意:如果数据库中已存在表“sequence”,建表时请更换表名。

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for sequence
-- ----------------------------
CREATE TABLE `sequence` (
  `name` varchar(32) NOT NULL,
  `value` int(6) DEFAULT NULL,
  `next` int(6) DEFAULT NULL,
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of sequence
-- ----------------------------
INSERT INTO `sequence` VALUES ('trans_no', '1', '1');

2.创建一个取六位序列的函数,如果数据达到‘999999’,下一次自动变为从0开始。 函数名:next_trans_num

BEGIN
	UPDATE sequence SET value=IF(last_insert_id(value+next)>= 999998,0,last_insert_id(value+next)) WHERE name=seq_name; 
	RETURN last_insert_id();
END

3.创建一个生成 日期+时间+6位序列的递增序列,生成所需的序列 函数名:get_trans_num

CREATE DEFINER=`root`@`localhost` FUNCTION `get_trans_num`() RETURNS varchar(20) CHARSET utf8
BEGIN
	DECLARE getval VARCHAR(24); 
	SET getval = (SELECT CONCAT(DATE_FORMAT(NOW(), '%Y%m%d%H%i%s'),  LPAD((SELECT next_trans_num('trans_no')), 6, '0')));
	RETURN getval;
END

4.调用函数get_trans_num,测试生成的数据。

select get_trans_num();

生成如下的序列号:20170527094555000003

可以根据需求的不同进行修改。函数next_trans_num主要生成递增的六位序列,函数get_trans_num主要生成日期+时间+6位序列,最后的六位序列可任意修改。如有疑问可加QQ群:107680366,大家一起学习,一起进步。

© 著作权归作者所有

逍遥丶蓝枫
粉丝 1
博文 30
码字总数 19288
作品 0
青岛
程序员
私信 提问
基于 Redis 的序列号服务的设计

本文讲述基于 Redis 的序列号服务的设计,主要从序列号服务的概念、需求以及服务的设计思路与详细设计等方面对其进行阐述。 〇、前言 在笔者团队中,由于分布式 ID 具有单调递增、形成序列的...

泛金融技术
2017/12/03
0
0
Mysql(五)-数据恢复

增量备份与增量恢复 一、启用binlog日志实现增量备份1、binlog日志介绍:又被称为二进制日志,是mysql数据库服务日志文件的一种。 好处:记录 除查询以外的所有SQL命令可用于数据恢复配置mys...

段超超
2018/01/06
0
0
xsequence 分布式序列号生成组件 1.2 更新啦

软件地址: 分布式序列号生成组件1.2更新啦,项目地址:https://gitee.com/xuan698400/xsequence 介绍说明: 微服务时代,我们需要生产一个连续的序列号,变得比较麻烦。 这里使用了Mysql实现...

徐安是个好人
2018/05/29
1K
6
php UUID &分布式生成用不重复的随机数方法

UUID(Universally Unique Identifier),通用唯一识别码。 UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的 UUID 由以下几个部分组成: 1)当前日期和时间 2)时钟...

SibylY
2018/04/26
0
0
SEQSVR:Go + MySQL 实现的高性能 ID 生成服务

SEQSVR Go + MySQL 实现的 ID 生成服务 特性 分布式:可任意横向扩展 高性能:分配 ID 只访问内存(到达上限会请求数据库一次) 易用性:对外提供 HTTP 服务 唯一性:MySQL 自增 ID,永不重复 ...

qichengzx
2018/07/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android双向绑定原理简述

Android双向绑定原理简述 双向绑定涉及两个部分,即将业务状态的变化传递给UI,以及将用户输入信息传递给业务模型。 首先我们来看业务状态是如何传递给UI的。开启dataBinding后,编译器为布局...

tommwq
今天
3
0
Spring系列教程八: Spring实现事务的两种方式

一、 Spring事务概念: 事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。...

我叫小糖主
今天
7
0
CentOS 的基本使用

1. 使用 sudo 命令, 可以以 root 身份执行命令, 必须要在 /etc/sudoers 中定义普通用户 2. 设置 阿里云 yum 镜像, 参考 https://opsx.alibaba.com/mirror # 备份mv /etc/yum.repos.d/CentO...

北漂的我
昨天
3
0
Proxmox VE技巧 移除PVE “没有有效订阅” 的弹窗提示

登陆的时候提示没有有效的订阅You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options. 用的是免费版的,所以每次都提示......

以谁为师
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部