当向具有自动增量主键列的表中插入一行时,有没有办法获取要分配给该行的值?
需要明确的是,我想将此值用作同一行上不同列的字符串的一部分。
执行 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/