MySQL 插入数据避免歧义

MySQL insert data AVOID Ambiguity

首先,我想一次 INSERT 两个 TABLE 数据。我知道这是不可能的。由于这个限制,我预见到如果同时发生两个 REQUESTS(插入数据)可能会出现问题。

有什么办法可以让我INSERT的数据在第一个table。没有人可以在第一个 TABLEINSERT 数据,因为我正在输入关系数据以避免错误的数据链接(这可能是因为我正在使用提到的函数来获取最后插入的 ID)mysqli_insert_id();.


更新

示例: 插图(伪代码)
(由于我的问题没有明确解决,添加了示例)


REQUEST-1:

//ClientRequest-1
1. INSERT data in table-A
2. GET INSERT-ID
3. INSERT data in table-B

REQUEST-2:

//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

问题是:

When Points 02,03,04 get executed, will the insert_id get affected for Request-1

这是正确的方法还是其他方法?

你有点糊涂了。所有 DML 操作(插入、更新、删除)都在 table 上持有隐式行级或 table 级锁,因此即使处理以多线程方式发生,另一个 DML 也不会成功,除非获得锁由之前的 DML 操作(在您的例子中是 INSERT)释放。

为了获得更好的可靠性,您可以考虑将 DML 代码块显式放置在 TRANSACTION 块中,以确保操作的原子性。