关于主键和插入简单的mysql问题(Easy mysql question regarding pr

2019-09-02 18:48发布

在MySQL中,我如何才能用于插入操作的主键,当它自动增量。

基本上,我想语句完成后要返回的新的自动增量值。

谢谢!

Answer 1:

您的评论澄清说,你有兴趣在确保LAST_INSERT_ID()如果另一个并发INSERT发生不给错误的结果。 请放心,它是可以安全使用LAST_INSERT_ID(),而不管其他并发活动。 LAST_INSERT_ID()只返回在当前会话期间生成的最新标识。

你可以自己尝试一下:

  1. 打开两个shell窗口,在每次运行mysql客户端并连接到数据库。
  2. 壳1:插入与一个AUTO_INCREMENT键的表。
  3. 壳1:SELECT LAST_INSERT_ID(),见结果。
  4. 壳2:插入到相同的表。
  5. 壳2:SELECT LAST_INSERT_ID(),见导致从外壳1的不同。
  6. 壳牌1:再次选择LAST_INSERT_ID(),请参阅前面的结果的重复。

如果你仔细想想,这是有道理的唯一途径。 支持自动递增的关键机制,所有的数据库都必须这样的行为。 如果结果取决于与其他客户可能同时插入一个竞争条件,那么就没有可靠的方法来获得在当前会话最后插入的ID值。



Answer 2:

MySQL的LAST_INSERT_ID()



Answer 3:

MySQL的文档描述的功能: LAST_INSERT_ID()



Answer 4:

[选择最大值从表名(primary_key_column_name)]唉唉不nessecarily。 我不是一个MySQL的家伙,但也有让最后完成的动作是比这一点更强大的最后插入的ID特定的方式。 如果什么插入已经发生了,你写表和查询它之间? 我知道,因为它在很久以前就把我刺痛了(所以是它确实发生)。 如果一切都失败阅读手册: http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html



文章来源: Easy mysql question regarding primary keys and an insert