9. SQL语句中, 事务的使用

2016-06-16  本文已影响161人  面糊
  1. 何为事务(Transaction)

    • 事务, 是并发控制的单位, 是用户定义的一个操作序列. 在这个序列中的所有操作, 是一个完整不可分割的整体.
    • 通过事务, 可以将逻辑相关的操作绑定在一起, 保持数据的完整性
    • 事务通常以: begin transaction作为开始, 以commit transacationrollback transaction结束
      • commit: 表示提交事务的所有操作, 也就是将事务中所有对数据库的操作, 写入到磁盘上的数据库中, 然后正常的结束事务
      • rollback: 表示回滚, 即在事务运行的过程中, 发生了某种故障, 事务不能继续进行, 系统会将事务中对数据库的所有已经完成的操作全部撤销, 回滚到事务开始之前的状态
  2. 事务的操作测试

    • 如果手动操作事务, 就一定要遵循手动开启 -> 执行任务 -> 手动提交或回滚

    • 如果没有手动开启或者提交, 那么数据库的操作就会失败

        // 模拟事务
        - (void)touchesBegan:(NSSet<UITouch *> *)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];
            }
        }
上一篇 下一篇

猜你喜欢

热点阅读