我需要为来自ac#应用程序的记录生成和ID(前缀为字符串的数字序列)并将其存储在MYSQL中,当需要创建另一条记录时,依次获取先前创建的记录Id并且它是递增。
我的问题是,当多个用户使用该应用程序时,我们如何保证不会同时访问相同的ID。此外,我假设我们需要一些锁定机制,如果是这样,实现它的最佳方法是什么。
谢谢,
答案 0 :(得分:2)
您需要一些策略来确保所有客户端对“下一个ID”的请求都是协调的。
在数据库级别,这通常由序列处理。有关在MySQL中模拟序列的讨论,请参阅
MySQL equivalent of Oracle's SEQUENCE.NEXTVAL
C#应用程序将查询MySQL中的序列以获取下一个可用的数字。请注意,没有严格保证将分配所有数字。例如,如果C#应用程序获得下一个序列号但崩溃,那么该号码将被“分发”但不会最终使用。
如果您不想让数据库成为协调点,那么还需要其他东西。如果不了解您的架构,很难提出更好的选择。
如果ID可能很长并且不需要是顺序的,只是唯一的,您可以使用GUID(实际上是128位数字)。