#### 使用闭包处理事务
```
sql::transaction(function(){
if(!sql::update('DELETE FROM news WHERE id=?',[1,3]))
{
throw new Exception;
}
if(!sql::delete('DELETE FROM news where id=?',[5]))
{
throw new Exception;
}
});
```
> 注意: 在 transaction 闭包若抛出任何异常会导致事务自动回滚。
#### 开启事务
有时候你可能需要自己开启一个事务
```
sql::beginTransaction()
```
#### 事务回滚
通过 rollback 的方法回滚事务
```
sql::rollback();
```
#### 提交事务
通过 commit 的方法提交事务
```
DB::commit();
```
#### 排他锁
排他锁(FOR UPDATE )即,禁止其他事务执行任务操作(包括查询)。
```
Db::transaction(function(){
//锁定goods表,多个用户执行本代码时,需要前一个用户执行完才可以操作goods表,哪怕是读取goods表中的数据
Db::table('goods')->lock()->get();
});
```