【问题标题】:How to select an auto incremented field in MySQL?如何在 MySQL 中选择一个自动递增的字段?
【发布时间】:2015-03-13 22:57:13
【问题描述】:

首先,有类似的问题,但我找不到满意的答案。

我有一个users 表,其中有 idnamesurnamecity 作为其列。 id 是自动递增的。当用户填写表单的字段并提交表单时,显然会在数据库中创建一条记录。

我想返回用户的 ID。我认为,SELECT TOP 1 id FROM users ORDER BY id DESC 和选择最后插入的 id 都不是答案,因为可能同时有很多创建。

简而言之,有没有办法在创建时选择自动递增的字段?

【问题讨论】:

  • [...]First of all, there are similar questions, but I couldn't find a satisfied answer[...] 哪些问题,为什么没有帮助? MySQL 本身有LAST_INSERT_ID(),而你用来与mysql 通信的API 很可能有类似的东西,你可以在其中请求LAST_INSERT_ID
  • @t.niese 使用SELECT TOP 1 id FROM users ORDER BY id DESC 和“选择最后插入的ID”的答案。它们没有帮助,因为当几乎同时有两条记录时,它可能会返回错误的 id。那就是我所想的。当然我可能是错的,但答案并不像我说的那样令人满意。

标签: mysql


【解决方案1】:

您可以通过驱动程序(例如mysqli_insert_id)或通过SELECT LAST_INSERT_ID() 获取最后一个插入ID。

这将返回此连接的上一个查询的自动增量值。因此,如果另一个用户使用另一个连接同时插入了一行,它不会更改最后一个插入 ID。

【讨论】:

  • 句子的“this connection”部分很重要。我想这就是看起来的样子。我担心的是这个。
【解决方案2】:

试试 MySQL 函数 LAST_INSERT_ID()mysql_insert_id()

那些工作联系特定的。

【讨论】:

    猜你喜欢
    • 2010-09-30
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多