【发布时间】:2012-05-16 17:35:03
【问题描述】:
我最近为我的 java 应用编写了一个会计模块。
该模块基于 MYSQL 表和 INNODB 引擎。
其中一个要求当然是每张发票的“运行”ID。
我尝试使用auto_increment 方法和使用序列表来生成id,但是在这两种方法中我都有同样的问题:因为id是在我持久化发票实体时生成的,如果在刷新持久化实体期间发生错误到数据库,auto_id 增加,导致我的一系列发票中出现“漏洞”。
我当然可以放弃这种方法,并为新发票分配以前发票的最大 ID + 1,但我认为这是一种不好的做法。我可以使用哪些其他方法来确保我的发票系列中没有漏洞,假设有时发票可能由于某些验证问题而无法保存。
【问题讨论】:
-
人们一次又一次地尝试将 auto_increment 用于它不适合的用途。使用另一个为您执行顺序编号的查询,不要依赖 auto_increment。依赖 auto_increment 进行任何类型的顺序编号是不好的做法,并且完全错误地使用该类型的列。
标签: java mysql persistence auto-increment