在使用自动增量主键列的表中插入行时,是否有办法获取将分配给该行的值?
要清楚,我想将此值用作同一行中不同列的字符串的一部分。
执行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”。这是一种混乱的方式,但它应该有效,不是吗?
思想?
答案 0 :(得分:1)
你无法使用auto_increment字段。相反,您可以手动生成UID
(unique primary key
)并将其用于此目的。
答案 1 :(得分:1)
您应该查看SQL命令“SHOW TABLE STATUS”
尝试一下,然后谷歌进一步了解如何从中提取“auto_increment”值。
答案 2 :(得分:0)
不是那么糟糕。如果你没有在外部生成密钥,那么没有。您可以在表格上设置一个触发器并使其成为非自动增量,然后自己生成密钥。