我一直在寻找生成唯一ID的解决方案,但找不到符合我要求的任何内容。问题是:
我有一个数据库表" Transaction"其中包含各种"供应商"执行的所有交易。因此,transactionId对于特定供应商是唯一的。到目前为止,我曾经使用java中的随机字母数字API生成transactionId,以获得唯一值。到目前为止很好。现在,我们从供应商处获得了从1到999999开始生成id的要求,在达到上限之后我们需要将其重置为1.对于这个逻辑,我需要对该供应商特定的事务ID进行自动增量。我不能利用数据库自动增量,因为它不是整列。
我现在的一个解决方案是 - 在该表插入函数上添加一个触发器,并通过自动递增它来更新记录的事务ID值,如果它是针对该特定供应商的。
我对这个解决方案并不满意,并且通过java代码寻找任何其他想法,这可能会使它更容易并且不会影响性能(例如:使用同步)。此特定逻辑适用于多个用户将同时执行事务的Web应用程序。任何建议都会有所帮助。
提前致谢。
答案 0 :(得分:0)
我认为这可能会有所不同。您可以创建一个名为say' vendor_transaction'有两个字段vendor_name和transaction_id。想法是为此表中的供应商维护current_transaction_id。每个供应商在此表中都有一个条目,它将为您提供该供应商的当前transaction_id。
现在编写一个服务/实用程序来获取原子操作中给定供应商的transaction_id。即。提供像increment_and_get(vendor_name)这样的接口,它将增加当前事务id并在事务中返回值。当事务id为999999时,实用程序/也可以处理溢出情况。
希望这会给你一些想法。