mysql - 可以通过自动增量 pk 获取插入的值吗?

标签 mysql primary-key

当向具有自动增量主键列的表中插入一行时,有没有办法获取要分配给该行的值?

需要明确的是,我想将此值用作同一行上不同列的字符串的一部分。

执行 MAX(id) + 1 似乎不够稳健。 使用 LAST_INSERT_ID() 进行插入然后更新是不好的,因为这是 2 个单独的数据库调用。

谢谢

编辑:

大家对此有何看法:

INSERT INTO `mydatabase`.`mytable` (`name`, `description`) 
VALUES
  (
    CONCAT(
      'name-',
      CAST(
        (SELECT 
          `auto_increment` + 1 
        FROM
          `information_schema`.`TABLES` 
        WHERE `TABLE_SCHEMA` = 'mydatabase' 
          AND `TABLE_NAME` = 'mytable') AS CHAR
      )
    ),
    'description of this thing'
  ) ;

这样,您最终应该得到一行 id 为 5 的行,name 为“name-5”。这是一种有点困惑的方法,但它应该有效,不是吗?

想法?

最佳答案

您应该查看 SQL 命令“SHOW TABLE STATUS”

尝试一下,然后进一步谷歌以了解如何从中提取“auto_increment”值。

关于mysql - 可以通过自动增量 pk 获取插入的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9848478/

相关文章:

mysql - 如果线程非自然死亡会发生什么?

mysql - MYSQL 连接和计数问题

sql - 将行插入仅包含主键字段的表

asp.net-mvc - 为什么映射对象 PK 会破坏 ExpressMapper?

sql-server - 关于数据库键

java - 使用正则表达式将 WKT 转换为 GeoJSON

mysql - 自定义查询 : multiple custom post types

php - 从所有表中获取所有 PRODUCT_TYPE = "cars"

postgresql - 在一条语句中使用 PRIMARY KEY 创建 TABLE AS (PostgreSQL)

mysql - 是否建议在数据库的所有表中使用文本字段作为用户 ID?