1

在直接的 mysql 脚本中,我会做这样的交易:

START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;

我对事务在 PDO 中的工作方式有点困惑。看起来有 beginTransaction() 和 commit() 方法 - 所以我不确定这些只是简单的 SQL 的便利包装器吗?还是他们在幕后做更多的工作?

换句话说 - 下面的这些例子本质上是一样的吗?

示例 1:

$dbh->exec( 'START TRANSACTION' );
//...do some db work here...
$dbh->exec( "COMMIT" );

示例 2:

$dbh->beginTransaction();
//...do some db work here...
$dbh->commit();
4

1 回答 1

2

功能方面两者都是相同的,但是 beginTransaction() 和 commit() 是 PDO 函数,可确保与所有数据库的兼容性,并且可能有一些数据库可能会在 START TRANSACTION 时出错,但 PDO 方法将始终有效。

于 2012-06-05T04:44:48.890 回答