mysql 事务控制

同一个会话中,

执行insert、update、delete操作后,在会话commit之前,此时当前回话执行select操作可以检索到更改的内容,其他会话无法检索到当前回话更改的内容;


进行业务处理时,

当前业务如果没有处理成功,要rollback当前回话已经执行的insert、update、delete操作,防止下一次业务处理成功后commit时将上一次未处理成功的中间操作一并commit;


两个会话同时请求update、delete同一条记录时,

a会话update/delete执行后未commit之前,b会话的update/delete会阻塞,触发数据库的行锁,直到a会话commit后,b会话update/delete才会执行。

如果a会话一只不commit,将造成b会话Error Code: 1205. Lock wait timeout exceeded; try restarting transaction。


两个会话同时请求insert,

create table test_db.test_serial (
name   varchar(64) not null,
value   serial
);

insert into test_db.test_serial(name) values('hahaha');

a会话insert执行后未commit之前,b会话的insert操作可以正常进行,但是value的值会取a会话insert后的增量值,确保value的唯一性。

c会话在a、b会话commit之前,无法检索到记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值