Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

last_insert_id with multiple threads

I'm writing an application in C# that basically consists of two threads. Thread 1 gets data and puts it into a database, thread 2 takes that data does some additional operations. Will I run into problems with last_insert_id, like getting an insert id in the first thread from an insert that was done in the second thread? I am using the connector .net and primarily use the MySqlHelper with the connection string as a parameter.

Is last_insert_id safe to use in this case or would I be better off rethinking my approach, like creating two separate applications for these to tasks?

Also, I can't do everything in one thread. Each thread runs periodically and takes a different amount to complete. The first thread has to be able to insert data while the second thread performs its operations.

like image 917
Splatbang Avatar asked Feb 16 '12 14:02

Splatbang


People also ask

Is LAST_INSERT_ID thread safe?

It is because last_insert_id() is multi-thread safe that it does not provide you with the last insert id created, tablewide, on connection.

What will be the value of LAST_INSERT_ID () for the newly created table?

With no argument, LAST_INSERT_ID() returns a 64-bit value representing the first automatically generated value successfully inserted for an AUTO_INCREMENT column as a result of the most recently executed INSERT statement.

What does LAST_INSERT_ID mean?

Definition and Usage The LAST_INSERT_ID() function returns the AUTO_INCREMENT id of the last row that has been inserted or updated in a table.


1 Answers

last_insert_id() is reliable on a PER CONNECTION basis. If your threads are sharing the same MySQL connection and doing inserts, then it's undefined as to what ID you'll be retrieving.

If you're not running too many threads, you might be better off having the individual threads open their own MySQL connections, and then you'd be able to use last_insert_id() without issue.

like image 98
Marc B Avatar answered Sep 21 '22 17:09

Marc B