SQL事务处理

事务

	MySQL 5.5之前 默认存储引擎是MyISAM,5.5后InnoDB。
	事物,transaction,进行一次处理的基本单元,要么完全执行,要不都不执行
	事物保证了一次处理的完整性,也保证了数据库中的数据一致性,高级的数据处理方式,增删改环节出了错,允许我们回滚。

事务特性ACID

	事物特性,要不完全执行,要不都不执行,不能执行一半,四个英文字母表达ACID特性。
	A 原子性(Atomicity) 原子的概念就是不可分割,组成物质的基本单位,进行数据处理操作的基本单位
	C 一致性(Consistency) 数据库进行事务操作后,,会由原来的一致状态,变成另一种一致的状态。当事务提交后,或者当事务发生回滚后,数据库的完整性约束不能被破坏。任何写入数据库中的数据都需要满足我们事先定义的约束规则。
	I 隔离性(Isolation)  每个事务都是彼此独立的,不会受到其他事务的执行影响。一个事务在提交前,对其他事务都是不可见的。
	D 持久性(Durability) 事务提交之后对数据的修改是持久性的,即使在系统出故障的情况下,比如系统崩溃或者存储介质发生故障,数据的修改依然是有效的。因为当事务完成,数据库的日志就会被更新,这时可以通过日志,让系统恢复到最后一次成功的更新状态。
	A 基础
	I 手段
	C 约束条件
	D 目的

	一致性	将id设置为唯一性约束,当事务进行提交或者事务发生回滚的时候,id非唯一,就破坏了事务的一致性要求。
	事务操作会让数据表的状态变成另一种一致的状态,如果事务中的某个操作失败了,系统就会自动撤销当前正在执行的事务,返回到事务操作之前的状态。
	事务的另一个特点就是持久性,持久性是通过事务日志来保证的。日志包括了回滚日志和重做日志。当我们通过事务对数据进行修改的时候,首先会将数据库的变化信息记录到重做日志中,然后再对数据库中对应的行进行修改。这样做的好处是,即使数据库系统崩溃,数据库重启后也能找到没有更新到数据库系统中的重做日志,重新执行,从而使事务具有持久性。

事务的控制

使用SHOW ENGINES 查看支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。
1.显式开启一个事务
START TRANSACTION 或者 BEGIN
2.提交事务 提交事务后,对数据库的修改是永久性
COMMIT
3.回滚事务,撤销正在进行的所有没提交的修改,或者将事务回滚到某个保存点
ROLLBACK 或者 ROLLBACK TO [SAVEPOINT]
4.在事务中创建保存点,后期可回滚,一个事务中,多个保存点
SAVEPOINT
5.删除某个保存点
RELEASE SAVEPOINT
6.设置事务隔离级别
SET TRANSACTION


注意:
Oracle 默认不自动提交 需要手写COMMIT
MySQL 默认自动提交,配置MySQL的参数
set autocommit =0;  // 关闭自动提交
set autocommit =1;  // 开启自动提交
事务提交了 ,没法进行回滚了
SET @@completion_type = 1;
completion_type = 0 
	默认情况,执行COMMIT会提交事务,执行下一个事务,还需要START TRANSACTION 或者BEGIN开始
completion_type = 1
	当我们提交事务后,相当于执行了 COMMIT AND CHAIN,也就是开启一个链式事务,即当我们提交事务之后会开启一个相同隔离级别的事务
completion_type = 2
	COMMIT=COMMIT AND RELEASE,也就是当我们提交后,会自动与服务器断开连接。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值