mysqlトランザクションロールバック
2865 ワード
まずネット上のいくつかを集めて、よくテストして研究します~~
トランザクションはデータベース更新操作の基本単位であり、トランザクションロールバックとは、トランザクションが完了したデータベースの更新操作を取り消すことです.
トランザクションとは、ユーザー定義のデータベース・オペレーション・シーケンスです.これらのオペレーションは、すべて実行するか、すべて実行しないか、分割できない作業単位です.たとえば、リレーショナル・データベースでは、トランザクションはSQL文、SQL文のセット、またはプログラム全体であってもよい.簡単に例を挙げると、データベース内の2つの異なるテーブルを同時に変更する場合、トランザクションでない場合は、最初のテーブルが変更され、2番目のテーブルが変更中に異常が発生して変更できなかった場合、2番目のテーブルだけが変更前の状態に戻り、最初のテーブルが変更された可能性があります.トランザクションに設定すると、最初のテーブルが変更されましたが、2番目のテーブルの変更に異常が発生して変更できなかった場合、1番目のテーブルと2番目のテーブルは変更されていない状態に戻ります.これがいわゆるトランザクションロールバックです.データベース・トランザクションは、SQL文のセットからなる論理ワークユニットです.トランザクションは、データベース全体に永続的に記録されるか、または一括して取り消される不可分なSQL文のセットと見なすことができます.たとえば、銀行口座間で資金を転送します.1つのUPDATE文は、1つの口座の資金総数から一部を減算し、もう1つのUPDATE文は別の口座に資金を追加します.減算と加算は、データベースに永続的に記録するか、一括して取り消す必要がありますか?そうでないと資金が損失します.この単純な例では、UPDATE文は2つしか使用されませんが、より現実的なトランザクションには多くのINSERT、UPDATE、DELETE文が含まれる場合があります.
トランザクションはデータベース更新操作の基本単位であり、トランザクションロールバックとは、トランザクションが完了したデータベースの更新操作を取り消すことです.
トランザクションとは、ユーザー定義のデータベース・オペレーション・シーケンスです.これらのオペレーションは、すべて実行するか、すべて実行しないか、分割できない作業単位です.たとえば、リレーショナル・データベースでは、トランザクションはSQL文、SQL文のセット、またはプログラム全体であってもよい.簡単に例を挙げると、データベース内の2つの異なるテーブルを同時に変更する場合、トランザクションでない場合は、最初のテーブルが変更され、2番目のテーブルが変更中に異常が発生して変更できなかった場合、2番目のテーブルだけが変更前の状態に戻り、最初のテーブルが変更された可能性があります.トランザクションに設定すると、最初のテーブルが変更されましたが、2番目のテーブルの変更に異常が発生して変更できなかった場合、1番目のテーブルと2番目のテーブルは変更されていない状態に戻ります.これがいわゆるトランザクションロールバックです.データベース・トランザクションは、SQL文のセットからなる論理ワークユニットです.トランザクションは、データベース全体に永続的に記録されるか、または一括して取り消される不可分なSQL文のセットと見なすことができます.たとえば、銀行口座間で資金を転送します.1つのUPDATE文は、1つの口座の資金総数から一部を減算し、もう1つのUPDATE文は別の口座に資金を追加します.減算と加算は、データベースに永続的に記録するか、一括して取り消す必要がありますか?そうでないと資金が損失します.この単純な例では、UPDATE文は2つしか使用されませんが、より現実的なトランザクションには多くのINSERT、UPDATE、DELETE文が含まれる場合があります.
- $mysqli->autocommit(false);
- if(false){
- $mysqli->rollback();
- }else{
- $mysqli->commit();
- }
- mysql_query("BEGIN"); // mysql_query("START TRANSACTION");
- $sql = "INSERT INTO ...";
- $sql2 = "INSERT INTO ...";
- $res = mysql_query($sql);
- $res1 = mysql_query($sql2);
- if($res && $res1){
- mysql_query("COMMIT");
- echo ' 。';
- }else{
- mysql_query("ROLLBACK");
- echo ' 。';
- }
- mysql_query("END");