LAST_INSERT_ID()链接双表插入

时间:2014-11-22 23:13:57

标签: php mysql

我使用PDO运行PHP / MySql。

我们说我有这样的查询。 $ OrderId在"订单"中自动递增。表。 我可以使用LAST_INSERT_ID()在" Orders"中插入$ OrderId。和" BoughtItems"表。

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)

如果两个人同时为不同的订单执行此脚本会发生什么?

他们都得到相同的$ OrderId并混淆他们的订单有任何危险吗?

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

LAST_INSERT_ID()是基于每个连接计算的,因此跨越连接的竞争条件是安全的。

因此,如果与服务器的其他连接上的某人也执行INSERT,则不会影响您的LAST_INSERT_ID()正确性,因此您不会遇到任何问题。