首先,我想一次在两个INSERT中使用TABLE数据。我知道这不可能。由于这个限制,我预见到如果同时发生两个REQUESTS(用于插入数据),可能会出现一个问题。
当我在第一个表中INSERT数据的时候。在我输入关系数据时,没有人可以在第一个INSERT中使用TABLE数据来避免数据的错误链接(这可能是因为我正在使用上述函数获取最后插入的ID) mysqli_insert_id();。
更新
EXAMPLE: 插图(伪代码)
(添加了示例,因为我的问题没有得到明确的解决)
请求-1
//ClientRequest-1
1. INSERT data in table-A
2. GET INSERT-ID
3. INSERT data in table-B请求-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这样做是正确的还是其他的?
发布于 2015-11-09 12:30:06
你弄糊涂了。所有DML操作(insert、update、delete)都在表上持有隐式行级或表级锁,因此即使以多步方式进行处理,也不会成功地执行另一个DML操作,除非以前的DML操作释放该锁(在您的示例中是INSERT)。
为了获得更好的可靠性,您可以考虑显式地将DML代码块放置在TRANSACTION块中,以确保操作的原子性。
https://stackoverflow.com/questions/33606702
复制相似问题