我是使用事務的新手。關於PHP PDO的澄清選擇更新事務
基本上,我可以使用START TRANSACTION
後跟一個SELECT ... FOR UPDATE
語句成功鎖定MySQL控制檯中的單個行。該行仍然鎖定,直到我在控制檯
但是運行COMMIT
命令,當我做同樣的使用$db->beginTransaction()
隨後$db->execute("SELECT ... FOR UPDATE")
PHP腳本,該行沒有得到之前,我運行一個腳本$db->commit()
鎖定。
我的意思是即使在PHP中運行提交腳本來結束事務之前,我仍然可以在控制檯中成功執行SELECT ... FOR UPDATE
語句。這是否意味着我的PHP腳本在事務過程中未成功鎖定行?我怎麼能檢查?
當您嘗試檢查控制檯時,您確定您的事務仍處於打開狀態並且未被提交關閉嗎?可能是隔離級別的問題,所以默認值對於你的第一個和第二個例子是不一樣的......也許這可能有助於找出它們是不同的嗎? http://stackoverflow.com/questions/5347567/view-isolation-level-for-a-query-in-mysql – stef77
我只是再次測試它。我絕對樂觀,我沒有通過PHP關閉事務,因爲我的腳本中沒有'$ db-> commit()'任何地方。但是爲什麼我能夠在關閉當前的PHP之前啓動其他事務?當我在控制檯中執行事務時,不會發生此問題。即使不運行'commit()'命令,PHP是否會自動關閉事務? – user2028200