首先,我希望一次只有两个INSERT
TABLE
个数据。我知道这是不可能的。由于这个限制,我预见如果同时发生两个REQUESTS
(插入数据)可能会出现问题。
当第一个表中有INSERT
个数据时,有什么办法吗?第一个INSERT
中没有人可以TABLE
数据,因为我正在输入关系数据以避免错误的数据链接(这可能是因为我使用上述函数来获取最后插入的ID){{ 1}}。
我希望我的信息有明确的定义。如果没有,请提及它,以便我可以从头脑中发现这种可能性。在这方面,我将感谢你。
更新
示例:插图(PSEUDO代码)
(例子被添加,因为我的问题没有明确解决)
请求-1 :
mysqli_insert_id();
请求-2 :
//ClientRequest-1
1. INSERT data in table-A
2. GET INSERT-ID
3. INSERT data in table-B
CHALLENGE :
如果两个请求按以下顺序(多线程请求)并行处理而没有错误(先决条件),该怎么办?
//ClientRequest-2
1. INSERT data in table-A
2. GET INSERT-ID
3. INSERT data in table-B
问题是:
01. Point # 1 of Request-1
02. Point # 1 of Request-2
03. Point # 2 of Request-2
04. Point # 3 of Request-2
05. Point # 2 of Request-1
06. Point # 3 of Request-1
请指导我,这是正确的方式还是其他任何方式。感谢你在国王的问候。
答案 0 :(得分:2)
你有点困惑。所有DML操作(插入,更新,删除)都在表上保持隐式行级或表级锁定,因此即使处理以多线程方式进行,另一个DML也不会成功,除非先前的DML操作释放了锁(在你的情况下,它是INSERT)。
为了更好的可靠性,您可以考虑明确地将DML代码块放在while
块中,以确保操作的原子性。