**1. 事務控制語句**
* `BEGIN` 或 `START TRANSACTION` 顯式地開啟一個事務;
* `COMMIT` 也可以使用 `COMMIT WORK`,不過二者是等價的。提交事務,并使已對數據庫進行的所有修改成為永久性的;
* `ROLLBACK` 也可以使用 `ROLLBACK WORK`,不過二者是等價的。回滾會結束用戶的事務,并撤銷正在進行的所有未提交的修改;
* `SAVEPOINT identifier_name`,`SAVEPOINT` 允許在事務中創建一個保存點,一個事務中可以有多個 `SAVEPOINT`。保存點在執行`COMMIT`,或`ROLLBACK`后自動被釋放;
* `RELEASE SAVEPOINT identifier_name` 刪除一個事務的保存點,當沒有指定的保存點時,執行該語句會拋出一個異常;
* `ROLLBACK TO identifier_name` 把事務回滾到保存點;
* `SET TRANSACTION` 用來設置事務的隔離級別。InnoDB 存儲引擎提供事務的隔離級別有`READ UNCOMMITTED`、`READ COMMITTED`、`REPEATABLE READ` 和 `SERIALIZABLE`。
**2. 開啟事務的方式**
1、用 `BEGIN`, `ROLLBACK`, `COMMIT`來實現
```
BEGIN 開始一個事務
ROLLBACK 事務回滾
COMMIT 事務確認
```
2、直接用 `SET` 來改變 MySQL 的自動提交模式;
```
SET AUTOCOMMIT=0 禁止自動提交(開啟事務)
SET AUTOCOMMIT=1 開啟自動提交(關閉事務)
```
**3. 案例演示**
```sql
BEGIN;
#一些insert/delete/update語句
insert into learn_mysql.student(name, age, sex) values('張三',20, '男');
insert into learn_mysql.student(name, age, sex) values('李四',21, '男');
insert into learn_mysql.student(name, age, sex) values('王五',22, '男');
#回滾,對數據庫沒有任何影響
ROLLBACK;
COMMIT;
SET AUTOCOMMIT=0;
#一些insert/delete/update語句
insert into learn_mysql.student(name, age, sex) values('張三',20, '男');
insert into learn_mysql.student(name, age, sex) values('李四',21, '男');
insert into learn_mysql.student(name, age, sex) values('王五',22, '男');
#回滾,對數據庫沒有任何影響
ROLLBACK;
COMMIT;
SET AUTOCOMMIT=0;
#一些insert/delete/update語句
insert into learn_mysql.student(name, age, sex) values('張三',20, '男');
insert into learn_mysql.student(name, age, sex) values('李四',21, '男');
insert into learn_mysql.student(name, age, sex) values('王五',22, '男');
#不提交,對數據庫沒有任何影響
#COMMIT;
BEGIN;
#一些insert/delete/update語句
insert into learn_mysql.student(name, age, sex) values('張三',20, '男');
#定義保存點save_point_001
SAVEPOINT save_point_001;
insert into learn_mysql.student(name, age, sex) values('李四',21, '男');
insert into learn_mysql.student(name, age, sex) values('王五',22, '男');
#回滾到保存點save_point_001
ROLLBACK TO save_point_001;
#刪除保存點save_point_001
RELEASE SAVEPOINT save_point_001;
ROLLBACK;
COMMIT;
```
- MySQL
- MySQL是什么
- MySQL環境搭建
- centos7-MySQL8
- windows-MySQL8
- 數據庫軟件
- sqlyog軟件安裝
- navicat軟件安裝
- powerDesigner軟件安裝
- RDBMS術語
- SQL語句組成
- 數據庫系統組成
- 數據庫操作
- 數據表操作
- 查詢語句
- 基本語法
- 子查詢
- 表連接
- 查詢語句執行順序
- 事務
- 事務是什么
- 事務的作用
- 事務的4個特性
- 事務隔離級別
- 事務的實現
- 索引
- 索引的作用
- 索引操作
- 存儲引擎
- 備份與恢復
- 視圖
- 視圖是什么
- 視圖的作用
- 創建視圖
- 查看視圖
- 更改視圖
- DML操作視圖
- 刪除視圖
- 存儲過程與函數
- 過程與函數是什么
- 存儲過程操作
- 定義存儲過程
- 調用存儲過程
- 查看存儲過程
- 刪除存儲過程
- 修改存儲過程
- 函數操作
- 過程與函數區別
- 流程控制
- if語句
- case語句
- while循環語句
- repeat循環語句
- loop循環語句
- 變量
- 處理程序
- 光標
- Redis
- 簡介
- 下載與安裝
- 命令操作redis數據庫
- 通用命令
- 數據操作
- 持久化
- Windows上的持久化操作
- 數據庫設計
- 數據庫設計過程
- ER模型圖
- MongoDB
- MongoDB是什么?
- MongoDB特性
- MongoDB 數據模型
- 安裝MongoDB
- MongoDB認證
- Database操作
- Collection操作
- Document操作
- 插入
- 查詢
- 更新
- 刪除
- buckWrite
- MongoDB索引
- 副本集
- 聚焦分析
- 事務管理
- 寫關注
- 讀關注