MySQL事务小结

事务基本特性(ACID)

  1. 原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的不可分割单位。
  2. 一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。
  3. 隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。
  4. 持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。

事务语句

MySQL使用如下的语句来标识事务的开始:

start transaction

或者

begin

事务成功后,使用如下的语句来标识事务的成功:

commit

当事务逻辑出现异常时,可以使用如下的语句来标识事务的取消:

rollback

事务操作

事务处理用来管理 INSERT 、UPDATE 和 DELETE 语句,无法管理不会改变数据的 SELECT 查询语句,也无法管理 CREATE 或 DROP 操作。事务操作隔离了其中被操作数据状态改变的可见性,同时使事务内的多次数据更新操作具有了原子性,即要么同时成功,要么全部失败。

创建测试表 test:

create table test(a int, b char(5));

执行事务操作:

start transaction;

insert into test values('1', 'right');
insert into test values('2', 'wrong');
update test set b = 'right' where a = 2;
select * from test;

commit;

上述操作中,一个事务内包含两次独立的插入操作和一次更新操作,以及一次查询全部数据的操作。由于事务的隔离性,当事务结束前,其他连接的查询语句将无法查询到插入的这两条数据,也无法对其进行更新操作,只有处于同一事务的查询语句和更新语句可以针对该新插入的数据进行查询或更新。当执行了 commit 语句后,该事务内的操作将全部生效,使其他连接也可以对此事务更新后的数据进行操作。

当上述事务中的语句如果出现执行失败,或在事务提交前执行了 rollback 语句,那么不管语句已经执行成功了多少条,其数据库状态都将恢复到全部语句执行之前的状态。

转载于:https://my.oschina.net/u/1156626/blog/1649430

MySQL事务处理是一种用于确保数据库操作的一致性和完整性的机制。事务是一组数据库操作,要么全部成功执行,要么全部回滚到初始状态。 在MySQL中,事务处理的关键是使用ACID属性来保证数据的一致性和可靠性: 1. 原子性(Atomicity):事务中的所有操作要么全部成功执行,要么全部失败回滚。MySQL使用日志来记录事务的操作,以便在发生故障时进行回滚。 2. 一致性(Consistency):事务开始之前和结束之后,数据库的完整性约束没有被破坏。如果事务执行过程中发生错误,所有已经执行的操作将被回滚,数据库将回到事务开始之前的状态。 3. 隔离性(Isolation):并发执行的事务之间相互隔离,每个事务都感觉不到其他事务的存在。MySQL通过锁机制来实现隔离性,保证事务之间不会相互干扰。 4. 持久性(Durability):一旦事务提交成功,其所做的修改将永久保存在数据库中,即使发生系统故障也不会丢失。 在MySQL中,可以使用以下语句来控制事务的开始、提交和回滚: 1. BEGIN或START TRANSACTION:开始一个新的事务。 2. COMMIT:提交事务,使之生效。 3. ROLLBACK:回滚事务,撤销之前的操作。 在实际应用中,事务处理可以用于处理复杂的业务逻辑,确保数据的完整性和一致性。同时,合理地使用事务可以提高数据库的性能和并发能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值