```php $res = \Max\Database\Db::transaction(function (Query $query, \PDO $pdo) { //$pdo->setAttribute(\PDO::ATTR_ORACLE_NULLS,true); 可以自行设置需要的参数 $deletedUsers = $query->name('users')->whereIn(['id' => [1,2,3]])->delete(); if(0 == $deletedUsers){ throw new \PDOException('没有用户被删除!'); } return $query->name('books')->whereIn(['user_id' => [1,2,3]])->delete(); }); ``` 其中`transaction`接受一个闭包的参数,该回调可以传入两个参数,一个是当前的查询实例,另一个是`PDO`实例,可以看到这里执行了两条`SQL` ,当执行结果不满足时可以手动抛出`PDOException`异常来回滚事务,否则如果执行过程抛出异常也会自动回滚事务。执行没有错误结束后提交事务。该闭包需要返回执行的结果,返回的执行结果会被`transaction`方法返回。