[英]LAST_INSERT_ID() to link on double table insert
我在带有PDO的PHP / MySql上运行。
假设我有这样的查询。 $ OrderId在“订单”表中是自动递增的。 我可以使用LAST_INSERT_ID()在$“ Orders”和“ BoughtItems”表中插入$ OrderId。
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并混淆他们的订单有任何危险吗?
感谢您的时间 !
LAST_INSERT_ID()
是基于每个连接计算的,因此对于跨连接的竞争条件是安全的。
因此,如果与服务器处于不同连接的某人也执行INSERT
,则不会影响LAST_INSERT_ID()
正确性,因此不会遇到任何问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.