3

PHP.netのPDOトランザクションの例は、がトランザクションされていることを示していPDO::exec()ますが、を使用したそのような例はありませんPDO::query()

トランザクションはカバーしPDO::query()ますか?

また、私が理解しているようにPDO::query()、結果セットを返します。トランザクションされた場合、ステートメントはコミットされるまで実行されるべきではないので、どのように結果セットがありますか?PDO::query()(これは、実際に取引されていないことを意味しますか?)そうであるかどうかを示す公式の参照を見つけることができないようです。

4

1 に答える 1

3

あなたは取引を誤解しています。トランザクションは、操作がアトミックであることを保証するだけです。つまり、すべての操作が成功するか、いずれも成功しないかのどちらかです。トランザクションを開始すると、すべてのクエリが実行され、トランザクションログに記録されます。操作が失敗してロールバックすると、すべての操作が元に戻されます。

つまり、クエリがトランザクション可能かどうかは、使用しているかどうかには依存しませんがexecqueryクエリの種類によって異なります。INSERTUPDATEおよびDELETEトランザクション可能であり、DBMSに応じて、他の操作(などALTER TABLE)がトランザクション可能である場合とそうでない場合があります。

于 2012-07-08T12:57:42.337 に答える