FMDB事务的底层实现

2020-05-13  本文已影响0人  深度码农患者

在使用基于SQLite的数据库的时候,如果要一次性插入或更新大量数据,则适合使用事务(Transaction)

  1. 开始执行事务
    调用FMDB的开始事务方法,告诉数据库,要开始执行事务
- (BOOL)beginTransaction {
    BOOL b = [self executeUpdate:@"begin exclusive transaction"];
    if (b) {
        _isInTransaction = YES;
    }
    return b;
}
- (BOOL)beginDeferredTransaction {
    BOOL b = [self executeUpdate:@"begin deferred transaction"];
    if (b) {
        _isInTransaction = YES;
    }
    return b;
}
- (BOOL)beginImmediateTransaction {
    
    BOOL b = [self executeUpdate:@"begin immediate transaction"];
    if (b) {
        _isInTransaction = YES;
    }
    
    return b;
}
- (BOOL)beginExclusiveTransaction {
    BOOL b = [self executeUpdate:@"begin exclusive transaction"];
    if (b) {
        _isInTransaction = YES;
    }
    return b;
}

如上所示

  1. 关闭事务
    在FMDB中,有两个函数是用于关闭事务的
- (BOOL)rollback {
    BOOL b = [self executeUpdate:@"rollback transaction"];
    if (b) {
        _isInTransaction = NO;
    }
    return b;
}
- (BOOL)commit {
    BOOL b =  [self executeUpdate:@"commit transaction"];
    if (b) {
        _isInTransaction = NO;
    }
    return b;
}

如上所示,rollback方法用于回滚并结束事务,commit用于提交更新并结束事务

  1. 实现事务
    其底层实现实际上就是在执行开始事务的时候标识“已经开始事务”,此时写入数据库的操作并不会真正写入数据库,而会在commit的时候统一写入或者在rollback放弃
上一篇 下一篇

猜你喜欢

热点阅读