在直接的 mysql 脚本中,我会做这样的交易:
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;
我对事务在 PDO 中的工作方式有点困惑。看起来有 beginTransaction() 和 commit() 方法——所以我不确定这些是否只是 staright SQL 的便利包装器?还是他们在幕后做了更多工作?
换句话说,下面这些例子本质上是一样的吗?
示例 1:
$dbh->exec( 'START TRANSACTION' );
//...do some db work here...
$dbh->exec( "COMMIT" );
示例 2:
$dbh->beginTransaction();
//...do some db work here...
$dbh->commit();
最佳答案
功能方面两者相同,但 beginTransaction() 和 commit() 是 PDO 函数,可确保与所有数据库兼容,并且可能有一些数据库可能会在 START TRANSACTION 时出错,但 PDO 方法将始终有效。
关于Mysql事务问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10891625/