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 に答える