我使用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并混淆他们的订单有任何危险吗?
感谢您的时间!
答案 0 :(得分:0)
LAST_INSERT_ID()
是基于每个连接计算的,因此跨越连接的竞争条件是安全的。
因此,如果与服务器的其他连接上的某人也执行INSERT
,则不会影响您的LAST_INSERT_ID()
正确性,因此您不会遇到任何问题。