简体   繁体   中英

LAST_INSERT_ID() to link on double table insert

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM