mySQL事务 处理

定义:事务(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 | 销售部      | 成都          |
+------+--------+------------+



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值