I have a MySQL question that I think must be quite easy. I need to return the LAST INSERTED ID from table1 when I run the following MySql query:
INSERT INTO table1 (title,userid) VALUES ('test',1);
INSERT INTO table2 (parentid,otherid,userid) VALUES (LAST_INSERT_ID(),4,1);
SELECT LAST_INSERT_ID();
As you can understand the current code will just return the LAST INSERT ID of table2 instead of table1, how can I get the id from table1 even if I insert into table2 between?
I had the same problem in bash and i'm doing something like this:
which works fine:-) But
don't work. Because after the first command, the shell will be logged out from mysql and logged in again for the second command, and then the variable @last_insert_id isn't set anymore. My solution is:
Maybe someone is searching for a solution an bash :-)
If you need to have from mysql, after your query, the last auto-incremental id without another query, put in your code:
You could store the last insert id in a variable :
Or get the max id frm table1
Since you actually stored the previous LAST_INSERT_ID() into the second table, you can get it from there:
For last and second last:
For no InnoDB solution: you can use a procedure
don't forgot to set the the delimiter for storing the procedure with ;
And you can use it...