【发布时间】:2010-06-02 09:13:26
【问题描述】:
我正在使用 C++ 和 MySQL。
我有想要保存到数据库的数据对象。他们需要有一个唯一的 ID 用于识别目的。问题是,如何获取这个唯一 ID?
这是我想出的:
1) 使用 MySQL 的 auto_increment 特性。但是如何获得ID呢?我知道 MySQL 提供了这个“SELECT LAST_INSERT_ID()”功能,但这将是一个竞争条件,因为两个对象可以非常快地相互插入。此外,没有其他东西可以使物体可辨别。几乎可以同时使用完全相同的数据创建两个对象。
2) 在 C++ 端生成 UID。也没有骰子。有多个程序将写入和读取数据库,它们彼此不知道。
3) 以 MAX(uid)+1 作为 uid 值插入。但是,我基本上遇到了与 1) 相同的问题,因为我们仍然有竞争条件。
现在我被难住了。我假设这个问题一定是其他人也遇到过,但到目前为止,我还没有找到任何答案。
有什么想法吗?
【问题讨论】:
标签: c++ mysql uniqueidentifier