2015-05-19 111 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不守行插入順序的記錄。這是基於最後一個註冊表,我更新必須實現自己的手段來收集所需信息的任何算法。如果沒有,遲早會得到錯誤的行。 (網絡速度可能不那麼容易併發訪問的相關性。)