流水号自增规则:时间(天) + 自增流水(000)
例如:20150109001,20150109016,20150110001
思路一:
思路:java通过static 和 synchronized来实现
问题:如果是单纯的一个静态变量,那么如果服务器意外重启,这个变量会从0开始。
解决:如果是0的话去持久化介质中验证是否这天从0开始
总结:java 内存方式固然性能好,实现简单,但是毕竟不是从实际持久化取值,会有数据不同步的情况。
思路二:
思路:通过sql实现,把并发问题交给数据库处理
mysql:
- INSERT INTO tmp_order (orderNum) (
- SELECT CONCAT('20150202',liushui) FROM
- (
- SELECT
- CASE
- WHEN orderNum IS NULL THEN '001'
- WHEN RIGHT(MAX(orderNum),3)+1 <10 THEN CONCAT('00',RIGHT(MAX(orderNum),3)+1)
- WHEN RIGHT(MAX(orderNum),3)+1 <100 THEN CONCAT('0',RIGHT(MAX(orderNum),3)+1)
- ELSE RIGHT(MAX(orderNum),3)+1 END liushui FROM tmp_order t
- WHERE t.orderNum LIKE '20150202%'
- ) t1
- )
如果不加日期的纯流水可以考虑使用zerofill
如果担心数据库的并发处理会出问题,可以将这个字段设置成唯一,前台做良好的错误提示或自动提交。
以上只是个人浅见,欢迎大家指教讨论~
相关推荐
通常,流水号可以是自增的整数,每次插入新记录时自动递增。在SQL数据库中,可以通过创建一个带有`IDENTITY`属性的字段来实现这一功能。例如: ```sql CREATE TABLE MyTable ( Id INT IDENTITY(1,1) PRIMARY KEY, ...
### C#生成流水号小代码知识点解析 #### 一、代码功能概述 这段代码主要实现了在C#中自动生成带有日期的流水号的功能。流水号通常用于标识唯一性记录,例如订单编号、文档编号等。该代码通过结合当前日期与递增的...
一种常见的方法是基于时间戳和自增序列结合,确保每次生成的流水号都是唯一的。例如,我们可以使用当前时间的毫秒数加上一个自增序列,通过一定的格式化处理,形成易于识别的流水号。在C#中,可以利用`DateTime.Now....
初始化原子整型为0,每次生成订单号时自增1,然后取其值作为流水号: ```java AtomicInteger sequence = new AtomicInteger(0); int seqNum = sequence.incrementAndGet(); ``` 流水号可以添加前导0,使其保持...
日期部分是使用当前日期的年月日,流水号部分是使用一个自增的数字。流水号的生成规则可以总结为:当日期相等时,加 1;当日期不相等时,重新赋值日期,流水号从 1 开始。 并发测试 并发测试是该解决方案的最后...
可以生成各种类型的不会重复的流水号,支持批量生成流水号,支持生成各个类型的流水号且互不冲突,例如给每个业务生成互不影响的流水号。 生成的流水号支持各种格式和长度,例如TB201708100001,AAS2017080001,SDB...
更复杂的流水号可能包括业务系统的标识符、随机数或者自增序列。 流水号生成软件的设计通常基于以下几点: 1. **唯一性**:这是流水号生成的最基本要求,确保每一个流水号在整个系统中都是唯一的,不会重复。这...
在Java编程中,生成流水号是一项常见的需求,特别是在金融、电商等系统中,流水号作为交易的唯一标识,对于数据的追踪和管理至关重要。在这个场景中,“java生成流水-格式202001270001”指的是一个Java程序,用于...
mysql创建流水号,以前也一直不知道怎么写,最后我知道了,然后我保存了下来,用的纯sql语句,不需要后台java或者别的语言去生成。直接数据库的sql语句就行了。我设置的积分是1分。要是增加了,就是CSDN增加的,
SQL Server 中按年月日生成日期型自增编码 本文档介绍了在 SQL Server 中生成日期型自增编码的...* 流水号生成 * 日期型自增编码生成 该方法提供了一种灵活的解决方案,能够满足不同业务需求的日期型自增编码需求。
在IT行业中,生成相同长度的流水号是一项常见的需求,特别是在数据库操作、订单处理或系统标识等领域。在C#编程语言中,我们可以利用多种方法来实现这一功能。下面将详细介绍如何在C#中生成相同长度的流水号,并提供...
- **扩展性**:随着业务的增长,可能需要支持多业务线或分区域的流水号生成,这时可以设计更复杂的流水号结构,如前缀+自增序列。 - **性能优化**:在高并发环境下,应确保流水号生成不会成为性能瓶颈,可能需要使用...
这种方法能够生成连续的流水号编码,但可能会在多用户同时操作时产生冲突。为了避免这种冲突,可以在保存之前进行检查或使用其他机制确保唯一性。 ### SQL存储过程应用 存储过程`PWMS_GetMaxNo`的具体实现未在代码...
在IT行业中,数据库管理和数据处理是至关重要的环节。在MySQL数据库中,存储过程是一种预编译的...这种方案适用于需要自增且有一定规则的流水号场景,如订单号、故障编号等,有效地解决了多用户并发访问时的冲突问题。
流水号通常用于为数据库中的记录生成唯一的标识,它们可以是自增主键,也可以是带有特定前缀、后缀和日期元素的字符串。在事务处理中获取流水号尤其重要,因为这确保了在并发环境下也能保持流水号的唯一性和正确性。...
### 自动增长列的编号生成方法 在数据库应用开发中,自动增长列的编号生成是一项非常实用的技术。它能够有效地减少应用程序与数据库之间的交互次数,从而提高系统的整体性能。本文将详细探讨一种实现自动增长列编号...
4. **数据库自增ID**:利用数据库的自增特性,每个节点连接不同的数据库实例,这样每个节点都能生成唯一的流水号。但这依赖于数据库,扩展性较差。 5. **分布式ID服务,如Twitter的Bottleneck、Facebook的Voldemort...
在实际开发中,流水号的生成可以基于时间戳、数据库自增字段或者分布式ID生成器。 序列号(Serial Number)则更侧重于安全性与防伪,它通常由一系列特定算法计算得出,可能包含版本信息、产品ID、发行日期等,用于...
下面将详细介绍SQL Server 2000和DB2中分页存储过程的实现,以及DB2如何自动生成流水号。 首先,让我们看看SQL Server 2000的分页存储过程。在SQL Server 2000中,由于没有内置的OFFSET和FETCH NEXT功能,我们通常...