首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL插入数据避免歧义

MySQL插入数据避免歧义
EN

Stack Overflow用户
提问于 2015-11-09 10:08:09
回答 1查看 39关注 0票数 1

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

当我在第一个表中INSERT数据的时候。在我输入关系数据时,没有人可以在第一个INSERT中使用TABLE数据来避免数据的错误链接(这可能是因为我正在使用上述函数获取最后插入的ID) mysqli_insert_id();

更新

EXAMPLE:           插图(伪代码)

           (添加了示例,因为我的问题没有得到明确的解决)

请求-1

代码语言:javascript
复制
//ClientRequest-1
1. INSERT data in table-A
2. GET INSERT-ID
3. INSERT data in table-B

请求-2

代码语言:javascript
复制
//ClientRequest-2
1. INSERT data in table-A
2. GET INSERT-ID
3. INSERT data in table-B

挑战性

如果这两个请求按照以下顺序(多线程请求)并行处理,而没有错误(先决条件),该怎么办:

代码语言:javascript
复制
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

问题是:

代码语言:javascript
复制
When Points 02,03,04 get executed, will the insert_id get affected for Request-1

这样做是正确的还是其他的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-09 12:30:06

你弄糊涂了。所有DML操作(insert、update、delete)都在表上持有隐式行级或表级锁,因此即使以多步方式进行处理,也不会成功地执行另一个DML操作,除非以前的DML操作释放该锁(在您的示例中是INSERT)。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33606702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档