2015-05-19 84 views
0

的序列我必须更新行为表(InnoDB的),然后选择我上次更新注册表之后,使插入。如果连接速度太慢(对于update语句),select语句是否会得到错误的行?假设我正在使用两个不同的查询。MySQL的:执行的查询

+1

如果你不上使用LAST_INSERT_ID的auto_incrementing主键 – Strawberry

+2

能不能请你告诉你正在使用的查询?这取决于你如何识别你正在更新/选择的行。 –

+0

更好,在程序中做。 – Rahul

回答

0

您使用的SQL运行脚本或者您运行的是别的地方? (来自PHP,Python,C#)

来自SQL的脚本应该总是完成一行,然后再继续下一行,但如果您不确定是否可以调用类似于睡眠函数或等待延迟的函数来暂停你跑你的第二条线。

*我说应该,因为我已经看到了一些非常罕见的随机的情况下,通常不长时间运行的查询。如果你的第一份工作需要很长时间才能完成,那么可能值得在工作代理中安排第一份工作,然后在那天晚些时候安排第二份工作。

+0

我正在执行PHP的查询。 – hilk

+0

在大多数情况下(除非您已经以某种方式对其进行了说明),在开始下一个查询之前,PHP可能不会等待一个查询完成执行。一个快速而简单的解决方案是将你的查询放入一个存储过程,然后运行存储过程。 – Gene

0

MySQL不守行插入顺序的记录。这是基于最后一个注册表,我更新必须实现自己的手段来收集所需信息的任何算法。如果没有,迟早会得到错误的行。 (网络速度可能不那么容易并发访问的相关性。)