2009-04-28 65 views
0

在存儲過程中執行一個事務嗎?是否有任何鎖定以防止他人更新表?存儲過程中的mysql事務(鎖定/回滾)

我也需要明確地放入回滾邏輯,否則如果發生錯誤是因爲它永遠不會到達commit命令,事務會自動回滾。

回答

0

存儲過程中的事務是否執行任何鎖定以阻止其他人更新表?

當您執行上InnoDB表中的一些DML,受影響的行會被鎖定,直至交易結束時(不要緊它是一個存儲過程內或不)。

您可以修改鎖定它的同一個事務中的鎖定行。

要明確地鎖定一些行,問題:

SELECT * 
FROM table 
WHERE condition 
FOR UPDATE 

除了commiting或回滾事務,沒有其他的方式來解鎖行

我是否需要明確提出在回滾邏輯,或者如果發生錯誤,事務會自動回滾,因爲它永遠不會到達提交命令。

您需要明確執行回滾。

+0

我想我問的是行將保持鎖定的交易期間。這意味着如果我有多個更新,鎖定將在每次更新後釋放,或者僅在所有更新完成後纔會釋放,因爲它們處於事務中。 – richs 2009-04-28 21:12:55