一、事务的特性
事务的作用是为了保证一组DML操作要么全部成功执行,要么全部取消。包含以下四种特性:
- Atomic:原子性。所有语句作为一个单元全部成功执行或全部取消;
- Consistent:一致性。如果数据库在事务开始时,所有数据处于一致状态,则在事务期间也保持一致状态;
- Isolated:隔离性。各个事务之间互不影响;
- Durable:持久性。事务成功执行后,所有的更改都会准确地记录在数据库中,不会丢失。
二、事务的相关操作
- 开始一个事务:START TRANSACTION或者BEGIN;
- 事务未提交之前,可以进行回滚:ROLLBACK;
- 提交事务:COMMIT;
- 保留点,用于对事务的部分回滚:SAVEPOINT;
- 释放保留点:RELEASE SAVEPOINT。
操作示例:
mysql> START TRANSACTION; #开始一个事务
mysql> DELETE FROM students WHERE id=1; #从students表中删除id为1的记录
mysql> SAVEPOINT delete1; #创建保留点,命名为delete1
mysql> DELETE FROM students WHERE id=2; #从students表中删除id为2的记录
mysql> SAVEPOINT delete2; #创建保留点,命名为delete2
mysql> SELECT * FROM students; #在当前事务中,id为1和2的记录已被删除
+----+--------+-----------+---------+---------+-------------+
| id | name | cardid | chinese | english | mathematics |
+----+--------+-----------+---------+---------+-------------+
| 3 | 小李 | 333333333 | 65 | 79 | 83 |
| 4 | 小王 | 444444444 | 91 | 89 | 54 |
| 5 | 小张 | 555555555 | 78 | 80 | 74 |
+----+--------+-----------+---------+---------+-------------+
mysql> ROLLBACK TO delete1; #回滚到保留点delete1之后