【发布时间】:2017-04-26 22:19:55
【问题描述】:
我有一个 Java EE Web 应用程序和一个 SQL Server 数据库。 我打算稍后对我的数据库进行集群。
现在,我有两张桌子: - 用户 - 地点
但我不想使用 SQL Server 的自动 ID。 由于集群,我想生成自己的 id。
所以,我创建了一个新表Parameter。参数表有两列:TableName 和LastId。我的参数表存储了最后一个 id。当我添加一个新用户时,我的方法 addUser 这样做:
- 查询参数表的最后一个id,递增+1;
- 插入新用户
- 更新最后一个 id +1。
它正在工作。但它是一个 Web 应用程序,那么同时 1000 人怎么样?也许他们中的一些人得到相同的最后一个ID。我该如何解决这个问题?我尝试过同步,但它不起作用。
你有什么建议?是的,我必须避免自动递增。
我知道用户必须等待。
【问题讨论】:
-
好吧,唯一的方法就是同步或使用自动增量。
-
您可以使用 GUID 代替密钥吗?数据库并不总是必须是密钥的来源。请注意,在参照完整性方面,GUID 并不总是那么方便 - 与整数相比,您携带的键相当大。
标签: sql-server jakarta-ee auto-increment