MySQL C++连接器:获取插入ID

3
我正在使用mysql连接器C++。我的表中有一个auto_increment列,我想在执行插入操作时获取插入id。有人知道怎么做吗?谢谢。
我的代码大致如下:
conn->setAutoCommit(0);
pstmt.reset(conn->prepareStatement(insertStr.c_str()));

int updateCount = pstmt->executeUpdate();
conn->commit();
1个回答

4
如果您正在使用的库的API没有提供检索last_insert_id的方法(似乎C++ Connector就是这种情况),您可以始终执行查询
SELECT LAST_INSERT_ID();
它会给您“表示作为最近执行的INSERT语句的结果成功插入到AUTO_INCREMENT列中的第一个自动生成值的值。”请参阅此处以获取MySQL文档的解释 更新:
我找到了这篇文章,其中一位用户说如果您没有在字段上使用auto_increment,则可以使用
SELECT @@identity AS id;

感谢您的快速帮助。我可以用这种方式获取插入的ID。有一个问题,如果有许多连接执行插入操作,是否会发生冲突? - user1205398
3
它是基于每个连接的。如果您添加 SELECT LAST_INSERT_ID() FROM table,甚至可以基于每个表处理。 - Patrick B.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接