mysql事务处理.sql_mysql—事务处理

事务是由一系列的的sql语句组成的执行单元,主要用于处理操作量大,复杂度高的数据.

并非所有的引擎都支持明确的事务处理管理,MyISAM和InnoDB是两种常使用的引擎,前者不支持明确的事务处理,后者支持,在创建表的时候要注意设置的引擎类型.可以通过命令show create table #表名# 来查看引擎类型,当要修改表引擎时,可以使用 alter table #表名# engine=innodb; 来实现.

b2b3840a5897187b10c42baef4c47a0c.png

事务的处理必需满足ACID原则,也就是原子性(A)、一致性(C)、隔离性(I)、和持久性(D).

1、原子性(atomicity):事务必需数据库的逻辑工作单元,成批的MysqL语句要么全执行,要么全不执行.

2、一致性(consistency):事务在完成时,必须使所有的数据都坚持一致状态.如果系统运行中发生故障,有些事务尚未完成被迫中断,这些未完成的事务对数据库所做的修改有一部分已写入物理数据库,此时数据库处于一种不一致的状态.

3、隔离性(isolation):一个事务的执行不能被其他事务干扰.即一个事务内部的操作和使用的数据对其他并发事务是隔离的,并发执行的各个事务间不能互相干扰.

4、持久性(durability):一个事物一旦提交,则它对数据库中数据的改变是永久的.即使以后系统故障也不应该对其执行结果有任何影响.

因此,事务的ACID原则保证了事务提交后或者成功执行,或者失败回退,二者必居其一,所以它对数据的修改具有可恢复性,当事务失败了,数据可以恢复到该事务执行前的状态.另外事务还可以避免语句被部分执行造成数据不一致的情况的发生.

事务的类型:系统提供的事务和用户定义的事务.

系统提供的事务是指在执行某些sql语句时,一条语句就构成了一个事务,例如:alter table、create、delete、drop、insert、update、select...等等.

在实际应用中大量使用的是用户定义的事务.事务的定义办法:用begin|start transaction指定一个事务的开始,用commit或rollback语句表名一个事务的结束.必须明确指定事务的结束,否则系统将把从事务开始到用户关闭连接之间的所有操作当成一个事务来处理.

事务术语:

事务(transaction):一组sql语句

回退(rollback):撤销指定sql语句的过程;

提交(commit):将未存储的sql语句结果写入数据库表;

保存点(savepoint):指事务处理中在某一个位置设置的临时标记点,你可以回退到这里.对于复杂的事务处理时实现部分提交或回退.

控制事务处理:

事务开启:start transaction | begin

保存点:savepoint #名称#

撤退到保存点:rollback to #名称#

回滚事务:rollback

事务提交:commit

7c641101e389ef79c4e22c96ab1601be.png

执行回滚操作

478a5005c1d952b0a5622702bba9f5fd.png

执行事务提交操作

e432d9aa5a35618430e1a6d8e99ca51f.png

设置保存点回滚操作

更改默认的提交行为:

MysqL行为是自动提交所有修改,也便是执行了sql语句会直接修改表的.为了MysqL不自动提交更改,可以使用set autocommit=0来操作.查看默认的提交模式:show variables like 'autocommit'.在事务处理完之后再设置回来:set autocommit=1.

c05619ae39cdd0772e97065123668c3d.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值