定义:事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行。所以,应该把它们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。
作用:当对多个表进行更新的时候,某条执行失败。为了保持数据的完整性,需要使用事务撤回。即:事务可以用来保证数据库的完整性,保证SQL语句要么全部执行,要么全部都不执行。
四大基本特征:
1.原子性:一组事务,要么成功,要么失败(撤回)。
2.一致性:只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态。
3.隔离性:事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。
4.持久性(可靠性):事务完成之后,它对于系统的影响是永久的,该修改即使出现系统故障也将一直保留,真实的修改了数据库。
事务语句:
1.开始一个事务:
START TRANSACTION
2.设置保定点:
SAVEPOINT 保定点名称
回滚保定点:
ROLLBACK TO 保定点名称
3.操作
SQL操作
4.可以回滚,可以提交(没有问题就提交,有问题就回滚)。
COMMIT & ROLLBACK
这两个关键字主要用于mysql事务。
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> delete from department where d_name='财务部';
Query OK, 1 row affected (0.01 sec)
mysql> delete from employee where dept_no =
-> (select d_no from department where d_name = '财务部');
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM employee;
+------+--------+-------+---------+----------+----------+-------------+
| e_no | e_name | e_sex | dept_no | e_job | e_salary | hire_date |
+------+--------+-------+---------+----------+----------+-------------+
| 1001 | 李强 | 1 | 20 | 会计 | 1600 | 2015-9-9 |
| 1002 | 王刚 | 1 | 30 | HR | 1600 | 2014-10-9 |
| 1003 | 珊珊 | 0 | 30 | HR | 1250 | 2014-11-7 |
| 1004 | 张阳 | 1 | 20 | 出纳 | 2975 | 2015-4-9 |
| 1005 | 小丽 | 0 | 40 | 销售经理 | 2850 | 2015-2-10 |
| 1006 | 王二 | 1 | 10 | 产品策划 | 2450 | 2015-4-23 |
| 1007 | 小冬 | 1 | 40 | 销售经理 | 2750 | 2015-3-10 |
| 1008 | 何刚 | 1 | 30 | HR | 1600 | 2014-11-9 |
| 2001 | 小明 | 1 | 10 | 界面设计 | 2500 | 2016-11-315 |
+------+--------+-------+---------+----------+----------+-------------+
9 rows in set (0.00 sec)
mysql> SELECT * FROM department;
+------+--------+------------+
| d_no | d_name | d_location |
+------+--------+------------+
| 10 | 产品部 | 上海 |
| 30 | 人事部 | 广州 |
| 40 | 销售部 | 成都 |
+------+--------+------------+
mysql> rollback;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM department;
+------+--------+------------+
| d_no | d_name | d_location |
+------+--------+------------+
| 10 | 产品部 | 上海 |
| 20 | 财务部 | 北京 |
| 30 | 人事部 | 广州 |
| 40 | 销售部 | 成都 |
+------+--------+------------+