# 事务处理 @Transactional()
除了 PHP-MySQLi-Database-Class 的事务方法,ESD 还提供了注解事务的使用。
~~~
use ESD\Plugins\Mysql\Annotation\Transactional;
/**
* @Transactional()
*/
public function save(){
$this->save2();
}
public function save2(){
$this->save3();
}
public function save3(){
}
~~~
以上三个方法都会进行事务
@Transactional 接受五个参数。
## name
使用哪个mysql 连接设置。 默认 default
## isolation
**一般不修改**
隔离级别,支持如下几个等级 默认 DEFAULT=READ_COMMITTED
**DEFAULT**
>[info] 这是默认值,表示使用底层数据库的默认隔离级别。
> 对大部分数据库而言,通常这值就是: READ_COMMITTED 。
**READ_COMMITTED**
> 该隔离级别表示一个事务只能读取另一个事务已经提交的数据。
> 该级别可以防止脏读,这也是大多数情况下的推荐值。
**READ_UNCOMMITTED**
> 该隔离级别表示一个事务可以读取另一个事务修改但还没有提交的数据。
> 该级别不能防止脏读和不可重复读,因此很少使用该隔离级别。
**REPEATABLE_READ**
> 该隔离级别表示一个事务在整个过程中可以多次重复执行某个查询,并且每次返回的记录都相同。
> 即使在多次查询之间有新增的数据满足该查询,这些新增的记录也会被忽略。该级别可以防止脏读和不可重复读。
**SERIALIZABLE**
> 所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。
> 但是这将严重影响程序的性能。通常情况下也不会用到该级别。
## propagation
传播行为,默认 REQUIRED。
**REQUIRED**
>[info] 如果当前存在事务,则加入该事务;
> 如果当前没有事务,则创建一个新的事务。
**SUPPORTS**
> 如果当前存在事务,则加入该事务;
> 如果当前没有事务,则以非事务的方式继续运行。
**MANDATORY**
> 如果当前存在事务,则加入该事务;
> 如果当前没有事务,则抛出异常。
**REQUIRES_NEW**
> 创建一个新的事务,如果当前存在事务,则把当前事务挂起。
**NOT_SUPPORTED**
> 以非事务方式运行,如果当前存在事务,则把当前事务挂起。
**NEVER**
> 以非事务方式运行,如果当前存在事务,则抛出异常。
**NESTED**
**暂不支持**
> 如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;
> 如果当前没有事务,则该取值等价于 REQUIRED 。
## rollbackFor
接收到什么异常会回滚 。默认 \Throwable::class;
## noRollbackFor
接受到什么异常不会回滚。默认 null
- 前言
- 捐赠ESD项目
- 使用篇-通用
- 环境
- 安装
- 规范
- 压力测试
- 配置
- 如何设置YML配置
- server配置
- 端口配置
- 项目结构
- 事件派发
- 日志
- 注解
- DI容器
- 自定义进程
- 并发及协程池
- Console插件
- Scheduled插件
- Redis插件
- AOP插件
- Saber插件
- Mysql插件
- mysql事务
- Actuator插件
- Whoops插件
- Cache插件
- PHPUnit插件
- Security插件
- Session插件
- EasyRoute插件
- http路由
- ProcessRpc插件
- AutoReload插件
- AnnotationsScan插件
- Tracing-plugin插件
- MQTT插件
- Pack插件
- AMQP插件
- Validate插件
- Uid插件
- Topic插件
- Blade插件
- CsvReader插件
- hashed-wheel-timer-plugin插件
- 使用篇-HTTP
- 路由
- 静态文件
- 路由定义
- 修饰方法
- 路由分组
- 资源路由
- 端口作用域
- 异常处理
- 跨域请求
- 路由缓存
- 控制器
- 控制器初始化
- 前置操作
- 跳转和重定向
- 异常处理
- 请求
- 请求对象
- 请求信息
- request消息
- response消息
- stream消息
- url接口
- 验证器
- 内置验证器
- 内置过滤器
- 使用篇-WS
- 如何使用
- 路由
- 使用篇-TCP
- 插件篇-PluginSystem
- 微服务篇-ESDCloud
- CircuitBreaker插件
- SaberCloud插件
- 分布式链路追踪系统
- Consul插件