# 事務處理
## **概述**
事務(transaction)是由查詢和/或更新語句的序列組成。 用 begin、start transaction 開始一個事務,rollback 回滾事務,commit 提交事務。 在開始一個事務后,可以有若干個 SQL 查詢或更新語句,每個SQL執行后,還應該有判斷是否正確執行的語句,以確定下一步是否回滾,若都被正確執行則最后提交事務。事務一旦回滾,數據庫則保持開始事務前狀態。就好象一個被編輯的文件不存盤退出,自然還是保持文件原來的樣子。所以,事務可被視為原子操作,事務中的 SQL,要么全部執行,要不一句都不執行。
## **注意**
~~~
在?MySQL?中只有使用了?Innodb?數據庫引擎的數據庫或表才支持事務。
~~~
## **使用方法**
~~~
1、開啟事務
$db->beginTransaction();
2、根據結果決定回滾或者提交
$db->rollback();?或者?$db->commit();
~~~
## **演示數據表 accounts**
~~~
DROP?TABLE?IF?EXISTS?`accounts`;
CREATE?TABLE?`accounts`?(
??`id`?int(10)?NOT?NULL?AUTO_INCREMENT,
??`name`?varchar(20)?DEFAULT?NULL,
??`balance`?int(10)?DEFAULT?NULL,
??PRIMARY?KEY?(`id`)
)?ENGINE=InnoDB?AUTO_INCREMENT=3?DEFAULT?CHARSET=utf8;
--?----------------------------
--?Records?of?accounts
--?----------------------------
INSERT?INTO?`accounts`?VALUES?('1',?'張三',?'1000');
INSERT?INTO?`accounts`?VALUES?('2',?'李四',?'0');
~~~
## **事務演示**
~~~
//演示:?從張三賬戶轉賬給李四200元
$db?=?db('accounts');
//開啟事務
$db->beginTransaction();
//扣除張三?200?元
$db->where('id?=??',?array(1))->field('balance',?-200);
//給李四賬戶充值?200元
$res?=?$db->where('id?=??',?array(2))->field('balance',?200);
$rowCount?=?$db->rowCount();
echo?'觀察更新后影響數據數量確保一定更新成功?['.$rowCount.']<br?/>';
//如果給李四賬戶充值?200元不成功則回滾
if(!$res?||?$rowCount?<?1){
????echo?'回滾...';
????$db->rollback();
}else{
????//成功則進行提交
????$db->commit();
}
~~~
- 快速開始
- phpGrace 介紹
- 環境需求及偽靜態設置
- 目錄結構及命名規則
- 初始化、原理、分組
- 控制器與路由
- 創建控制器
- 基礎控制器
- URL解析規則
- 自定義路由
- URL生成
- 數據與模型
- 數據庫配置
- 獲取數據庫操作對象
- 數據庫操作(CURD)
- 數據分頁詳解
- 事務處理
- 數據驗證
- 表單令牌及驗證
- 模型創建與調用
- 視圖
- 視圖文件創建
- 調用、引用視圖
- 視圖路徑模式
- 會話機制
- Cookie 操作
- Session[文件型 ]
- Session [memcache]
- Session [redis]
- 緩存機制
- 緩存概述及配置
- 文件型緩存
- Memcache 形式的緩存
- Memcache介紹
- Memcache安裝
- 開啟PHP Memcache
- PHP操作Memcache
- Memcache來保存Session
- Memcached圖形化管理工具
- Memcache安全相關
- redis 形式的緩存
- Redis介紹
- Redis安裝
- 開啟 PHP Redis
- Redis圖形化管理工具
- PHP操作Redis
- 配置、常量、語言
- 全局配置、分組配置
- 預定義常量
- 語言包使用說明
- 工具
- 函數小工具
- 安全與擴展
- 框架部署安全
- 常規安全
- 擴展說明
- 常用類庫
- 圖片處理類
- 文件上傳類
- IP地址獲取類
- 驗證碼繪制類
- 日期時間換算類
- md5加密類
- 服務器信息類
- curl通信類
- 文件下載類
- 類反射工具
- XML生成與解析
- 漢字轉拼音類
- 文件夾操作
- 人民幣大寫轉換類
- 第三方類庫
- QQ登錄 - web版
- 微信掃碼登錄-網站
- excel 讀寫操作
- 阿里云短信接口
- SMTP 郵件發送
- 二維碼生成類
- word、pdf 生成類
- 阿里云靜態云存儲接口類