9.SQL文でのトランザクションの使用

1590 ワード

  • トランザクション(Transaction)
  • トランザクションは、同時制御の単位であり、ユーザ定義の操作シーケンスである.このシーケンスにおけるすべての操作は、完全に分割できない全体である.
  • トランザクションによって、論理的に関連する操作を結合し、データの整合性を維持することができる
  • トランザクションは、通常、begin transactionを開始とし、commit transacationまたはrollback transactionで終了します.
  • commit:トランザクションをコミットするすべての操作、すなわち、トランザクション内のすべてのデータベースに対する操作をディスク上のデータベースに書き込み、正常にトランザクションを終了する
  • を表します.
  • rollback:ロールバックを表します.つまり、トランザクションの実行中に何らかの障害が発生し、トランザクションが続行できなくなり、システムはトランザクションのデータベースに対するすべての完了したオペレーションをすべて取り消し、トランザクションが開始する前のステータス
  • にロールバックします.

  • トランザクションの操作テスト
  • 手動でトランザクションを操作する場合は、 -> ->
  • に従う必要があります.
  • 手動でオンまたはコミットがない場合、データベースの操作は
      //  
      - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
          
          // 0.  
          [[SQLiteTool shareInstance] beginTransaction];
          
          // 1.  
          // zhangsan -50  lisi +50
          NSString *sql = @"update T_human set money = money - 50 where name = 'zhangsan'";
          BOOL result = [[SQLiteTool shareInstance] excuteSQL:sql];
          
          NSString *sql2 = @"update T_human set money = money + 50 where name = 'lisi'";
          BOOL result2 = [[SQLiteTool shareInstance] excuteSQL:sql2];
          
          NSLog(@"%i, %i", result, result2);
          
          if (result && result2) {
              //  
              [[SQLiteTool shareInstance] commitTransaction];
          } else {
              //  
              [[SQLiteTool shareInstance] rollBackTransaction];
          }
      }
  • に失敗します.