场景:库存超卖等,并发不是很大的情况下使用下

mysql测试使用,用多个客户端来检测,两个命令窗口,或 一个mysql,一个idea等等

start TRANSACTION ;

SELECT * FROM product where id=60 for UPDATE;

-- 测试, 先执行上面两名,就上锁了,另个事务想修改这条记录就不行

COMMIT;

-- 等这个事务提交了,就可以正常操作了

特别注意:where 后面的条件必须是主键索引或唯一索引,或是添加了索引 ,否则会升级为表锁,那就玩大了

------------------------------------------------------------------------------------


语法和程序中使用:
1 mybatis的sql语句做以下更改
SELECT * FROM 表 where id=1 for UPDATE;

2 执行方法上面添加事务注解必须,不要忘了
@Transactional(rollbackFor = Exception.class)
 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐