When inserting a row into a table with an auto increment primary key column, is there a way to get the value that is going to be assigned to that row?
To be clear, I want to use this value as a part of a string for a different column on the same row.
Doing MAX(id) + 1 doesn’t seem robust enough.
And doing the insert and then an update with LAST_INSERT_ID() is bad because that’s 2 separate db calls.
Thanks
EDIT:
What does everyone think of this:
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'
) ;
This way, you should end up with a row with id of 5 for example, and a name of “name-5”. This is kind of a messy way to go about it, but it should work, no?
Thoughts?
You should look in to the SQL command “SHOW TABLE STATUS”
Try it, and google further to find out how to pull the “auto_increment” value out of it.