gpt4 book ai didi

c++ - MySQL 中数据对象的 UID

转载 作者:太空宇宙 更新时间:2023-11-04 14:27:08 25 4
gpt4 key购买 nike

我正在使用 C++ 和 MySQL。

我有要保存到数据库的数据对象。他们需要有一个唯一的 ID 以用于识别目的。问题是,如何获得这个唯一ID?

这是我想出的:

1) 使用MySQL的auto_increment特性。但是如何获得ID呢?我知道 MySQL 提供了这个“SELECT LAST_INSERT_ID()”特性,但那将是一个竞争条件,因为两个对象可以非常快速地相继插入。此外,没有其他东西可以使对象可辨别。几乎可以同时使用完全相同的数据创建两个对象。

2) 在C++端生成UID。也没有骰子。有多个程序将写入和读取数据库,但彼此不认识。

3) 以 MAX(uid)+1 作为 uid 值插入。但是,我基本上遇到了与 1) 中相同的问题,因为我们仍然存在竞争条件。

现在我很困惑。我假设这个问题一定是其他人也遇到过的,但到目前为止,我没有找到任何答案。

有什么想法吗?

最佳答案

查询:

SELECT LAST_INSERT_ID()

将返回在您的特定连接上插入的最后一个 ID,而不是全局的。因此,不存在竞争条件,除非您自己的代码是多线程的,在这种情况下,您可能希望用某种 MT 锁包围 INSERT 和 SELECT。

关于c++ - MySQL 中数据对象的 UID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2956309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com