MySQL事务

嘉美伯爵

MySQL MySQL 188

事务

为保证业务的完整性,当一条语句出现错误,则此步骤全部回退

  • 原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行
  • 一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致
  • 隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的
  • 持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障

提交

  • 默认隔离级别可重复读,若事务级别为读已提交,则终端二不commit的情况下可以读取到终端一的数据。
### 终端一
begin; 开启
insert into students (sname) value ("sss");
commit; 只有commit才表示执行成功
### 终端二
mysql> select * from students;
+----+-------+
| id | sname |
+----+-------+
|  1 | Gage  |
|  2 | sss   |
+----+-------+

回退

### 终端一
begin; 开启
insert into students (sname) value ("sss");
rollback;  人为异常,事务回退
insert into students (sname) value ("kksk"); 测试语句
### 终端二
mysql> select * from students;
+----+-------+
| id | sname |
+----+-------+
|  1 | Gage  |
|  2 | sss   |
|  4 | kksk  |
+----+-------+
  • 查看隔离级别
mysql> show variables like "%iso%";
+-----------------------+-----------------+
| Variable_name         | Value           |
+-----------------------+-----------------+
| transaction_isolation | REPEATABLE-READ |
+-----------------------+-----------------+
1 row in set, 1 warning (0.01 sec)