mysqlトランザクションロールバック


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

  
  
  
  
  1. $mysqli->autocommit(false); 
  2. if(false){ 
  3.  $mysqli->rollback(); 
  4. }else{ 
  5. $mysqli->commit(); 

 

  
  
  
  
  1. mysql_query("BEGIN"); // mysql_query("START TRANSACTION"); 
  2. $sql = "INSERT INTO ..."
  3. $sql2 = "INSERT INTO ..."
  4. $res = mysql_query($sql); 
  5. $res1 = mysql_query($sql2);  
  6. if($res && $res1){ 
  7.     mysql_query("COMMIT"); 
  8.     echo ' 。'; 
  9. }else{ 
  10.     mysql_query("ROLLBACK"); 
  11.     echo ' 。'; 
  12. mysql_query("END");