Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何理解我的表是事务表还是锁表?_Mysql_Sql_Triggers_Transactions - Fatal编程技术网

Mysql 如何理解我的表是事务表还是锁表?

Mysql 如何理解我的表是事务表还是锁表?,mysql,sql,triggers,transactions,Mysql,Sql,Triggers,Transactions,根据和本段: 对于事务表,语句失败应导致回滚该语句执行的所有更改。触发器失败会导致语句失败,因此触发器失败也会导致回滚。对于非事务表,无法执行此类回滚,因此尽管语句失败,但在错误点之前执行的任何更改仍然有效 我发现如果我的表是事务性的,那么查询和触发器将相互依赖。我的意思是要么查询和触发器都会成功,要么都不会成功 那么如何检测我的表是事务还是锁呢?注意,我使用的是MySQL、InnoDB引擎和PDO(如果这很重要的话)您可以通过SHOW CREATE table为任何一个单独的表查找engine

根据和本段:

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

我发现如果我的表是事务性的,那么查询和触发器将相互依赖。我的意思是要么查询和触发器都会成功,要么都不会成功


那么如何检测我的表是事务还是锁呢?注意,我使用的是MySQL、InnoDB引擎和PDO(如果这很重要的话)

您可以通过
SHOW CREATE table
为任何一个单独的表查找
engine
参数,或者使用
SHOW table STATUS
查看
engine
列,找到您正在使用的表的类型

InnoDB支持事务。传统的MySQL引擎MyISAM没有


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

InnoDB表是事务表。非事务性表将是例如MyISAM。锁与事务相关,但对这两种类型都有效,所以我不太清楚你的意思。如果它说InnoDB,是的。如果它说MyISAM,你可能应该把它切换到InnoDB。