注:
要使用悲观锁,我们必须关闭mysql数据库的自动提交属性,因为MySQL默认使用autocommit模式,也就是说,当你执行一个更新操作后,MySQL会立刻将结果进行提交。
我们可以使用命令设置MySQL为非autocommit模式:
set autocommit=0;
打开两个窗口
第一个窗口执行下面的操作
//0.开始事务
begin;/begin work;/start transaction; (三者选一就可以)
//1.查询出商品信息
select * from info for update;
//2.提交事务
//commit;/commit work;
第二个窗口执行下面的操作
//2.根据商品信息生成订单
insert into info(id) values (1);
这个时候第二个窗口会处于等待的状态
只有第一个窗口的commit操作执行之后,第二个窗口才能插入
网友评论