我将尝试使用带有 FMDB SQLite iOS 包装器的事务。
文档在交易方面有些含糊,但通过快速查看一些功能,我得出了以下逻辑:
[fmdb beginTransaction];
// Run the following query
BOOL res1 = [fmdb executeUpdate:@"query1"];
BOOL res2 = [fmdb executeUpdate:@"query2"];
if(!res1 || !res2) [fmdb rollback];
else [fmdb commit];
最佳答案
您还可以使用 FMDatabaseQueue 来处理您的事务,它是 fmdb 的一部分:
[queue inTransaction:^(FMDatabase *db, BOOL *rollback) {
[db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:1]];
[db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:2]];
[db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:3]];
if (whoopsSomethingWrongHappened) {
*rollback = YES;
return;
}
// etc…
[db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:4]];
}];
关于objective-c - iOS SQLite FMDB 事务.. 正确用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6580259/