I run on PHP / MySql with PDO .
Let's say I have a query like this. $OrderId is auto-increment in "Orders" table. I can use LAST_INSERT_ID() to insert $OrderId in both "Orders" and "BoughtItems" tables.
INSERT INTO Orders (OrderId, CustomerName, CustomerEmail, OrderTotal, OrderTaxes)
SET @order_id = LAST_INSERT_ID();
INSERT INTO boughtItems (OrderId,ProductId,OrderedQty) Values (@order_id, :productid_1,
:name_1),(@order_id, :productid_2, :name_2),(@order_id, :productid_3, :name_3)
What will happen if two people execute this script for different orders at the very same time ?
Any danger that they both get the same $OrderId and mix up their orders ?
Thank you for your time !
LAST_INSERT_ID()
is calculated on a per-connection basis, so it is safe from race conditions across connections.
Therefore, if someone on a different connection to the server also performs an INSERT
, it will not affect your LAST_INSERT_ID()
correctness and therefore you will experience no problem.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.