2016-06-10 168 views
0

基於this question和本段documentation的:我怎麼理解我的表是交易還是鎖?

對於事務表,語句的故障不會導致的由語句執行的所有更改回滾。觸發失敗會導致語句失敗,因此觸發失敗也會導致回滾。對於非事務性表,這種回滾無法完成,因此雖然語句失敗,但在錯誤點之前執行的任何更改仍然有效。

我想通了,如果我的表是事務那麼無論是查詢和觸發器將取決於對方。我的意思是或者查詢和觸發器都會成功,或者都不會。

那麼如何檢測我的表是交易還是鎖?注意的是,我在使用MySQL,InnoDB引擎和PDO (如果這是需要了解的重要)

+0

InnoDB表是事務表。非事務性表格將是例如MyISAM。鎖與交易有關,但是都適用於這兩種類型,所以我不完全確定你的意思。 – Solarflare

回答

1

你可以找出表的您使用的是通過SHOW CREATE TABLE類型對任何個人之一,並查找ENGINE參數,或使用SHOW TABLE STATUS並查看Engine列。

InnoDB支持事務。傳統MySQL引擎MyISAM不支持。

你也應該測試你對任何系統對你而言重要的假設。僅僅因爲你在本地使用特定引擎並不意味着它是如何部署的,服務器默認可能會有所不同。

+0

阿好.... thx .. upvote –

+0

那麼是[此表](http://i.stack.imgur.com/djw0B.png)交易? –

+0

如果說InnoDB,是的。如果它說MyISAM,你應該把它切換到InnoDB。 – tadman