4
如果我是正確的,PDO交易不是真正的交易:它們只是關閉自動提交(請參閱documentation)。PDO交易是否阻塞,直到所有其他交易被提交?
因此,如果我有一個事務A刪除行和修改同一行的事務B,可能會發生以下情況。
- 事務A啓動並關閉自動提交。
- 事務B啓動並關閉自動提交。
- 事務A刪除一行。
- 事務B修改同一行。
- 事務A完成並提交更改。
- 事務B完成並提交更改。
但是在第6步中,該行在步驟5中已經被刪除。會發生什麼情況?
此外,我如何確保事務B阻塞,直到事務A被提交?僅供參考,我正在使用帶有innoDB的mysql的PDO。
謝謝。
你認爲「交易」和「不能自動提交的陳述」之間的區別是什麼?他們是一樣的東西。在步驟3中,當事務A刪除該行時,MySQL將在該行上設置「排他鎖定」,直到該事務被提交或回滾;因此交易B將在步驟4等待直到步驟5發生。 – eggyal
我認爲事務會自動阻止其執行,直到所有其他可能修改相同行的事務都被提交。我可能是錯的。 – CookieMonster
請參閱http://dev.mysql.com/doc/en/commit.html – eggyal