# 事務處理 @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插件