当向带有自动增量主键列的表中插入行时,是否有一种方法可以获得要分配给该行的值?
为了清楚起见,我希望将此值用作同一行中不同列的字符串的一部分。
执行MAX(id) +1看起来不够健壮。使用LAST_INSERT_ID()执行插入和更新是错误的,因为这是两个单独的db调用。
谢谢
编辑:
大家对此有何看法:
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-5“的name。这是一种杂乱无章的方式,但它应该有效,不是吗?
有什么想法?
发布于 2012-03-24 03:16:44
您应该查看SQL命令“显示表状态”。
试一试,谷歌将进一步了解如何从它中提取"auto_increment“值。
发布于 2012-03-24 02:02:39
您不能使用auto_increment字段。相反,您可以手动生成UID (unique primary key)并为此目的使用它。
发布于 2012-03-24 02:03:14
不是很糟吗。如果你没有在外部生成密钥,那就不是。您可以在表上设置一个触发器,使其成为非自动增量,然后自己生成键。
https://stackoverflow.com/questions/9848478
复制相似问题