基于this question和documentation的这一段:
对于事务表,语句失败应导致回滚语句执行的所有更改。触发器失败会导致语句失败,因此触发器失败也会导致回滚。对于非事务性表,无法进行此类回滚,因此尽管语句失败,但在错误点之前执行的任何更改仍然有效。
我发现我的表是否是 transactional ,那么查询和触发器都将相互依赖。我的意思是查询和触发都会成功,或者都不是。
那么如何检测我的表是事务还是锁定?注意到我使用的是MySQL,InnoDB引擎和PDO (如果知道这一点很重要)
答案 0 :(得分:1)
您可以通过SHOW CREATE TABLE
查找您所使用的表格类型,查找ENGINE
参数,或使用SHOW TABLE STATUS
并查看Engine
列。
InnoDB支持交易。 MyISAM,遗留的MySQL引擎,没有。
您还应该测试您对任何对您来说重要的系统的假设。仅仅因为您在本地使用特定引擎并不意味着它是如何部署的,服务器默认可能会有所不同。