首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >序列发生器

序列发生器
EN

Stack Overflow用户
提问于 2013-12-09 13:26:58
回答 2查看 585关注 0票数 0

我得到了一个存储客户详细信息的DB (我有一个表单可以输入详细信息,客户编号是自动生成的).If,我有1,2,3,4,5作为客户ID,然后下次当我创建一个客户时,表单应该默认客户ID为6。

我实现了上面的Goal.But,问题是,如果我同时创建两个客户,两者都会显示为6,但是每次打开表单时,客户ID的值应该是唯一的。(也就是说,如果我现在单击Customer,它应该显示6,然后我同时打开另一个表单,我应该得到客户ID为7…

如何做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-09 13:40:57

我建议将客户ID作为主键,并自动递增。

因此,每当您将值添加到customer表中时,Id将是唯一的,并且它将自动递增。

这背后的原因是:在您的代码中,如果两个用户一次使用相同的表单,两个用户都将收到相同的maxPartyId,并且当两个用户提交表单时,将存储相同的Id maxPartyId + 1。这意味着客户id将在您的数据库中被复制。

票数 2
EN

Stack Overflow用户

发布于 2013-12-09 14:45:33

有两种可能性:

  • 数据库:让DBMS为您做主键生成;在完成记录生成之前,不要假设您有一个有效的ID。实现将在很大程度上取决于您选择的数据库。
  • Singleton/互斥锁:让单个类生成和分发ID。使用锁语句防止并行生成。

就我个人而言,我建议采用第一种方法;实现通常更干净,您不必为线程锁定而费心。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20471797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档