java中具有某些约束的唯一id

java中具有某些约束的唯一id,java,mysql,auto-increment,uniqueidentifier,Java,Mysql,Auto Increment,Uniqueidentifier,我一直在寻找一个解决方案,以生成唯一的id,我找不到任何符合我的要求。问题是: 我有一个数据库表“Transaction”,其中包含了由不同“供应商”执行的所有事务。因此,transactionId对于特定供应商是唯一的。到目前为止,我使用java中的随机字母数字API为唯一值生成transactionId。到目前为止还不错。现在,我们从一个供应商那里得到了一个生成id的要求,从1开始到999999,在它达到上限后,我们需要将它重置为1。对于这个逻辑,我需要一个特定于这个供应商的事务id的自动增

我一直在寻找一个解决方案,以生成唯一的id,我找不到任何符合我的要求。问题是:

我有一个数据库表“Transaction”,其中包含了由不同“供应商”执行的所有事务。因此,transactionId对于特定供应商是唯一的。到目前为止,我使用java中的随机字母数字API为唯一值生成transactionId。到目前为止还不错。现在,我们从一个供应商那里得到了一个生成id的要求,从1开始到999999,在它达到上限后,我们需要将它重置为1。对于这个逻辑,我需要一个特定于这个供应商的事务id的自动增量。我不能使用数据库自动增量,因为它不在整个列上

我现在有一个解决方案——在表插入函数上添加一个触发器,并通过自动递增记录的事务id值来更新记录的事务id值(如果是针对特定供应商的)

我对这个解决方案并不是很满意,我希望通过java代码找到任何其他的想法,这些想法可以使它变得更简单,并且不会影响性能(例如:使用同步)。此特定逻辑适用于多个用户同时执行事务的web应用程序。任何建议都会很有帮助


提前谢谢。

我就是这么想的,您的里程可能会有所不同。您可以创建一个名为“vendor\u transaction”的表,其中包含两个字段vendor\u name和transaction\u id。其目的是在该表中维护供应商的当前\u transaction\u id。每个供应商在此表中都有一个条目,这将为您提供该供应商的当前交易id

现在,编写一个服务/实用程序来获取原子操作中给定供应商的事务id。即,提供一个像increment_和_get(供应商名称)这样的接口,该接口将增加当前事务id并在事务中返回值。当事务id为9999999时,实用程序/还可以处理溢出情况


希望这能给你一些想法。

我就是这么想的,你的里程可能会有所不同。您可以创建一个名为“vendor\u transaction”的表,其中包含两个字段vendor\u name和transaction\u id。其目的是在该表中维护供应商的当前\u transaction\u id。每个供应商在此表中都有一个条目,这将为您提供该供应商的当前交易id

现在,编写一个服务/实用程序来获取原子操作中给定供应商的事务id。即,提供一个像increment_和_get(供应商名称)这样的接口,该接口将增加当前事务id并在事务中返回值。当事务id为9999999时,实用程序/还可以处理溢出情况


希望这能给你一些想法。

你试过这个吗@Proxytype-如果您想查看ROWID,它没有多大帮助。一旦达到上限,我需要重置该值。如果我遗漏了什么,请告诉我。你要不要试试这个@Proxytype-如果您想查看ROWID,它没有多大帮助。一旦达到上限,我需要重置该值。如果我遗漏了什么,请告诉我。这是个好主意,关于如何锁定这个特殊方法有什么想法吗?可以在我的方法上使用@Transactional,这就足够了?这是个好主意,关于如何锁定这个特定方法有什么想法吗?可以在我的方法上使用@Transactional,这就足够了吗?