MySQL:获取最后插入的主键而不使用自动增量

标签 mysql last-insert-id

当我使用唯一哈希值作为主键时,我删除了我的记录 ID。这个主键显然不能自增。

现在我的问题是如何检索最后插入的主键? MySQL 在 LAST_INSERT_ID() 上返回 0,但它不是自动增量列。

最佳答案

事实

没有与返回非整数值的 LAST_INSERT_ID() 等效的方法。

一个人可以简单地

  1. 简单的方法

添加一个整数列,可以自动递增或非自动递增。

要使其正确自动递增,人们至少必须在 MySQL 本身中或使用他们选择的语言实现一种算法,以使用新 ID 填充现有记录。

  • 更复杂的方法
  • https://stackoverflow.com/a/53481729/2323764 (@kellymandem)

    添加第二个表来管理 ID,并由没有 ID 的原始表触发。

    一个人不能

    我发现这个问答非常有希望。

    Is there a way to get last inserted id of a NON - auto incremented column in MySQL?

    已经提到在 INSERT 语句中使用 LAST_INSERT_ID()

    但是

    INSERT INTO `table` ( `non_integer_column` ) VALUES ( LAST_INSERT_ID( 42 ) );
    SELECT LAST_INSERT_ID( );
    -> 42
    
    INSERT INTO `table` ( `non_integer_column` ) VALUES ( LAST_INSERT_ID( 'a0b1c2d3e4f5' ) );
    SELECT LAST_INSERT_ID( );
    -> 0
    

    非整数值将被忽略。

    关于MySQL:获取最后插入的主键而不使用自动增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53480701/

    相关文章:

    php - 从 php 运行时 SQL IN 不工作

    mysql - 单元测试项目和 MySql Odbc 驱动程序(Visual Studio Community 2013)

    database - flex 本地数据库 lastInsertId = 0

    python - 扭曲的 adbapi : runInteraction last_insert_id()

    php - mysql_insert_id 和 last_insert_id 错误行为

    sql - sqlite 中的 last_insert_rowid - 两个表

    php - Docker:PHP、Apache 和 MySQL 在同一个容器/同一个 Dockerfile 中

    mysql - #1136 - mysql 存储过程的列计数与第 1 行的值计数不匹配

    php - 使用 PHP 插入 MySql DB 不工作

    mysql - 从 mysql 数据库返回 VB.Net 中当前插入行的自动递增 ID 号