0

データベースを編集または読み取る関数がいくつかあります。関数ごとではなく、最初にトランザクションを開始し、最後にコミットまたはロールバックするのは良い考えですか?

同じトランザクション内で、コミット前に新しい値または古い値が読み取られますか?

各ページ読み込み内のすべての関数呼び出しでトランザクション動作が必要です。

編集:

私は単純な単一行のSQLステートメントのみを使用しています。すべてのロジックは php で行われます。

4

2 に答える 2

1

トランザクションを使用する背後にある考え方は、すべてのステートメントが成功する必要があるか、またはすべてのステートメントが成功する必要がない状況のためのものです。

トランザクションを使用しない場合、mysql は各ステートメントをトランザクションとして扱い、各ステートメントの後に自動コミットします (自動コミットを無効にしない限り、何も起こりません)。

于 2013-06-02T13:24:16.370 に答える
1

同じトランザクション内にある場合、新しい値が読み取られます。アイデアは、コミットする前に更新の結果を表示できるということです。コミットするまでトランザクションが変更を非表示にするのではなく、何か問題が発生した場合に変更を元に戻すことができます。

これらを関数ごとに行うかどうかに関しては、それぞれが何をしているか、およびそれらが同じデータに影響を与えているかどうかによって異なります。すべてが完了するまでコミット/ロールバックするかどうかを確認して決定する必要がない場合は、トランザクションを 1 つだけ保持しても問題ありません。

于 2013-06-02T13:24:31.623 に答える