繁体   English   中英

LAST_INSERT_ID()链接到双表插入

[英]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.

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