从存储在 MYSQL 中的 C# 生成唯一 ID

本文关键字:唯一 ID 中的 存储 MYSQL | 更新日期: 2023-09-27 18:34:35

>我需要为来自 c# 应用程序的记录生成 和 ID(以字符串为前缀的数字序列(并将其存储在 MYSQL 中,反过来,当需要创建另一条记录时,将获取先前创建的记录 ID 并将其递增。

我的问题是,当应用程序被多个用户使用时,我们如何保证不会同时访问相同的id。此外,我认为我们需要一些锁定机制,如果是这样,实现它的最佳方法是什么。

谢谢

从存储在 MYSQL 中的 C# 生成唯一 ID

您需要一些策略来确保协调所有客户端对"下一个 ID"的请求。

在数据库级别,这通常由序列处理。 有关在 MySQL 中模拟序列的讨论,请参阅

MySQL相当于Oracle的SEQUENCE。下一瓦尔

C# 应用程序将查询 MySQL 中的序列以获取下一个可用数字。 请注意,不能严格保证分配所有号码。 例如,如果 C# 应用程序获取下一个序列号但崩溃,则该序列号将被"分发",但最终不会使用。

如果您不想让数据库成为协调点,则需要其他内容。 如果不详细了解您的架构,就很难提出更好的选择。

如果 ID 可以很长,并且不需要是连续的,只是唯一的,则可以使用 GUID(实际上是 128 位数字(。