我怎么能理解我的表是事务还是锁定?

时间:2016-06-10 15:44:47

标签: mysql sql triggers transactions

基于this questiondocumentation的这一段:

  

对于事务表,语句失败应导致回滚语句执行的所有更改。触发器失败会导致语句失败,因此触发器失败也会导致回滚。对于非事务性表,无法进行此类回滚,因此尽管语句失败,但在错误点之前执行的任何更改仍然有效。

我发现我的表是否是 transactional ,那么查询和触发器都将相互依赖。我的意思是查询和触发都会成功,或者都不是。

那么如何检测我的表是事务还是锁定?注意到我使用的是MySQL,InnoDB引擎和PDO (如果知道这一点很重要)

1 个答案:

答案 0 :(得分:1)

您可以通过SHOW CREATE TABLE查找您所使用的表格类型,查找ENGINE参数,或使用SHOW TABLE STATUS并查看Engine列。

InnoDB支持交易。 MyISAM,遗留的MySQL引擎,没有。

您还应该测试您对任何对您来说重要的系统的假设。仅仅因为您在本地使用特定引擎并不意味着它是如何部署的,服务器默认可能会有所不同。